Kotlin中怎么捕获上下文中的变量与常量

这篇文章给大家介绍Kotlin中怎么捕获上下文中的变量与常量,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联公司长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为名山企业提供专业的成都网站设计、做网站,名山网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。

Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获。

fun main(args: Array) { //定义一个函数,该函数的返回值类型为()->List fun makeList(ele: String): () -> List {  //创建一个不包含任何元素的List  var list: MutableList = mutableListOf()  fun addElement(): List {   //向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) { 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中怎么捕获上下文中的变量与常量就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


当前题目:Kotlin中怎么捕获上下文中的变量与常量
文章出自:http://scyanting.com/article/gghesi.html