Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获。
fun main(args: Array
上例中顶一个一个局部函数,这个局部函数可访问或修改其所在函数中的变量。
Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,但只要程序返回一个新的addElement()函数,addElement()函数就会持有一个新的list的副本。
Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,只要程序返回一个新的addElement()函数,就会持有一个新的list的副本。
fun main(args: Array
输出结果:
******add1返回的List**********[刘备][刘备, 刘备]******add2返回的List**********[关羽][关羽, 关羽]