闭包:
闭包:就是一个函数和与其相关的引用环境变量(变量)组合的一个整体(实体)
也可以:一个函数,如果访问了外部的局部变量,则这个函数和它访问的局部变量,称为闭包
闭包会阻止外部变量的销毁,可以把局部变量的使用延伸到函数外部
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
}
}
}
本文通过两个示例介绍了Scala中的闭包概念。闭包是一个可以访问并保持对外部局部变量引用的函数,它可以阻止这些变量被销毁,使得局部变量能够在函数外部使用。第一个例子展示了闭包如何在函数内部捕获并使用外部变量。第二个例子说明了闭包如何在多次调用中维持状态,每次调用都会增加变量`a`的值。这两个实例揭示了闭包在实现状态保持和函数式编程中的作用。
497

被折叠的 条评论
为什么被折叠?



