在scala中,闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。
正常的函数中,函数内部的变量都是函数的参数,如
val sum = (x: Int, y: Int) => x + y;
x和y都是函数sum的参数。
当我们在函数内使用函数外部的变量时,就是闭包。
例:
// 定义一个全局变量
var y = 10;
// 定义一个函数,使用上面的全局变量
val sum2 = (x: Int) => x + y;
输出:
scala> sum2(5);
res0: Int = 15