什么是闭包?
闭包就是一个函数,这个函数可能会访问到函数外部的变量。
简单闭包(就是函数):
def addOne = (i:Int) => 1 + i
访问外部变量的闭包,如 :
var factor = 1
def addOne = (i:Int) => factor + i
以上函数应用到函数外的变量factor,定义这个函数的过程就是将 外部的变量的引用 捕获并构成一个封闭的函数。这样, factor 和 addOne 就构成了一个闭包。
这样相当于factor变量的引用被 “包”在了addOne函数之中, 如果factor变量值改变, 那addOne中factor引用的值也会改变, 若factor重新定义,addOne还是会指向原先的引用。
var factor = 1
def addOne = (i:Int) => factor + i
addOne(1) // 结果为2
factor = 2
addOne(1) //结果为3
var factor = 4
addOne(1) //结果为3
假设,现有以下两个类 :
class Func1{
val