闭包:
闭包:就是一个函数和与其相关的引用环境变量(变量)组合的一个整体(实体)
也可以:一个函数,如果访问了外部的局部变量,则这个函数和它访问的局部变量,称为闭包
闭包会阻止外部变量的销毁,可以把局部变量的使用延伸到函数外部
object Closure {
def main(args: Array[String]): Unit = {
val f = foo()
val r = f(20) // 能够访问到 a 是因为有闭包的存在
println(r)
}
def foo()={
var a = 10 //外部局部变量
(b:Int)=> a+b // 访问了外部局部变量 为闭包
}
}
object Closure {
def main(args: Array[String]): Unit = {
val f = foo()
println(f()) //输出:11
println(f()) // 输出:12
val f1 = foo()
println(f1()) // 输出:11
}
def foo()={
var a = 10
() => {
a+=1
a
}
}
}