当函数的执行依赖于声明在函数外部的一个或多个变量时,则成这个函数为闭包。
scala> var sum = 0 sum: Int = 0 scala> val accumulator = (x:Int)=> sum += x //包含外部变量sum的闭包 accumulator: Int => Unit = <function1> scala> accumulator(5) scala> sum res26: Int = 5
- 闭包可以捕获闭包之外的自由变量的变化
- 被闭包捕获的变量的改变,在闭包之外也可见
----