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编程中编程时,这个概念很有用。