这篇文章主要给大家介绍了关于Kotlin如何捕获上下文中的变量与常量的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Kotlin具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获。
fun main(args: Array<String>) {
//定义一个函数,该函数的返回值类型为()->List<String>
fun makeList(ele: String): () -> List<String> {
//创建一个不包含任何元素的List
var list: MutableList<String> = mutableListOf()
fun addElement(): List<String> {
//向list集合中添加一个元素
list.add(ele)
return list
}
return ::addElement
}
}
上例中顶一个一个局部函数,这个局部函数可访问或修改其所在函数中的变量。
Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,但只要程序返回一个新的addElement()函数,addElement()函数就会持有一个新的list的副本。
Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,只要程序返回一个新的addElement()函数,就会持有一个新的list的副本。
fun main(args: Array<String>) {
println("******add1返回的List**********")
val add1 = makeList("刘备")
println(add1())
println(add1())
println("******add2返回的List**********")
val add2 = makeList("关羽")
println(add2())
println(add2())
}
输出结果:
******add1返回的List**********
[刘备]
[刘备, 刘备]
******add2返回的List**********
[关羽]
[关羽, 关羽]
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对编程学习网的支持。
本文标题为:Kotlin如何捕获上下文中的变量与常量详解


基础教程推荐
- IOS获取系统相册中照片的示例代码 2023-01-03
- iOS开发使用XML解析网络数据 2022-11-12
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- Android开发Compose集成高德地图实例 2023-06-15
- Android实现短信验证码输入框 2023-04-29
- Flutter进阶之实现动画效果(三) 2022-10-28
- iOS开发 全机型适配解决方法 2023-01-14