闭包(Closure): 闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量(函数里局部变量的另外一个函数)。
案例:
var a = 3
val sum = (i:Int) => i + a
🌈 自由变量 a
定义在函数的外部,由于函数 sum
引用到了函数外部的定义的变量,函数变量 sum
可称为一个闭包
柯里化(Currying): 将一个参数列表的多个参数,变成多个参数列表的过程(普通多参数函数编程高阶函数的过程)。
案例:
def add(a: Int)( b: Int)={ a + b }
var addFour = add(4)_
println(addFour(5))
🌈 addFour
将接收多个参数的 add
函数,转换称为接收一个单一参数的函数。
函数的柯里化,其实是将函数的参数逻辑变简单,函数可以花一定存在闭包!
❤️ END ❤️