Kotlin如何捕获上下文中的变量与常量详解

Kotlin如何捕获上下文中的变量与常量详解,第1张

概述Kotlin如何捕获上下文中的变量常量详解 Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获. fun main(args: Array<String>) { //定义一个函数,该函数的返回值类型为()->List<String> fun makeList(ele: String): () -> List<String> { //创建一个不包含任何元素的List var list: MutableList<String> = mutable ...

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如何捕获上下文中的变量与常量详解全部内容,希望文章能够帮你解决Kotlin如何捕获上下文中的变量与常量详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存