Scala 闭包 和 柯里化
所属分类 scala
浏览量 712
闭包
函数嵌套
在一个函数定义中,包含另外一个函数的定义
在内层函数中可以访问外层函数中的变量
def mulBy(factor:Double) = (x:Double) => x * factor
val triple = mulBy(3)
val half = mulBy(0.5)
triple(3)
half(3)
柯里化 Currying
柯里化函数(Curried Function)
把具有多个参数的函数转换为一条函数链,每个节点上是单一参数
普通函数
def add1(a:Int , b:Int) = a + b
// 柯里化函数
def add2(a:Int) = (b:Int) => a + b
// 柯里化函数 简写
def add3(a:Int)(b:Int) = a + b
add1(1,2)
val add2_1 = add2(1)
add2_1(2)
val add3_1 = add2(1)
add3_1(2)
add2(1)(2)
add3(1)(2)
注意不能写成 add1(1,2)
def add5(a: Int) = {
def add5Inner(b: Int) = {
a + b
}
// 注意不要漏了这一行
// add5Inner _
add5Inner(_)
}
add5(1)(2)
上一篇
下一篇
scala 表达式/代码块 当参数
play action 各种写法
Scala函数调用省略点号和括号
scala 函数参数的求值策略
scala 元组
Scala中的 -> <- => {} ()