控制抽象

Scala基础

别来无恙 提交于 2019-12-09 23:20:57
1. 介绍 柯里化(currying, 以逻辑学家Haskell Brooks Curry的名字命名)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数作为参数的函数。 在Scala中方法和函数有细微的差别,通常编译器会自动完成方法到函数的转换。如果想了解Scala方法和函数的具体区别,请参考博文 Scala基础 - 函数和方法的区别 。 2. Scala中柯里化的形式 Scala中柯里化方法的定义形式和普通方法类似,区别在于柯里化方法拥有多组参数列表,每组参数用圆括号括起来,例如: def multiply(x: Int)(y: Int): Int = x * y multiply方法拥有两组参数,分别是(x: Int)和(y: Int)。 multiply方法对应的柯里化函数类型是: Int => Int => Int 柯里化函数的类型声明是右结合的,即上面的类型等价于: Int => (Int => Int) 表明该函数若只接受一个Int参数,则返回一个Int => Int类型的函数,这也和柯里化的过程相吻合。 3. 探究柯里化函数 我们仍以上面定义的multiply方法为例探索柯里化的一些细节: def multiply(x: Int)(y: Int): Int = x * y 上面的代码定义了一个柯里化方法