Scala中的currying函数
Scala中的currying函数
currying函数是将多个参数转换为单个参数的转换函数。一个currying函数将两个参数合并到仅包含一个参数的函数中。
在Scala中有两种语法来定义currying函数。
语法:
def functionName(arg1) = (arg2) => operation def functionName(arg1) (arg2) = operation
语法说明:
在第一种语法中,该函数采用等于arg2的arg1,然后执行该操作。
第一个参数是原始函数参数。此函数返回另一个函数,该函数采用原始函数的第二个。此链接对于函数的所有参数都是连续的。
这个链中的最后一个函数执行函数调用的实际操作。
示例
object MyClass { def add(x: Int) (y: Int) = x + y; def main(args: Array[String]) { println("sum of x + y = " + add(25)(10) ); println("sum of a + b = " + add(214)(4564) ); } }
输出结果
sum of x + y = 35 sum of a + b = 4778
代码说明:
上面的代码定义并使用了一个名为add的循环函数,此函数简单地将两个数字相加并返回它们的加法。但是根据如何定义递归函数来定义。该调用还会发送两个数字,就像函数调用中的两个不同函数一样。
Currying是一个有点棘手的概念,你需要正确地理解它来掌握这一点。但是在scala编程中编程时,这个概念很有用。