我有以下kotlin程序:
var a = 10
fun main(args:Array<String>){
var a1:()->Unit = test()
var a2 :()->Unit= test()
var a3 :()->Unit= test()
a1()
a2()
a3()
test2()
test2()
test2()
}
fun test():()->Unit{
//var a = 10
return {
println(a)
++a
}
}
fun test2(){
//var a = 10
println(a)
++a
}
输出结果是:
10
11
12
13
14
15
这是我想要的结果,但我把
fun test():()->Unit{
//var a = 10
把上面的//去掉后,输出结果是:
10
10
10
10
11
12
fun test():()->Unit{这个语句是定义闭包的语句吗?闭包不是保存函数上一次执行的结果内容吗?为什么输出结果还是:
10
10
10
10
11
12 |
|