Scala柯裡函數
柯裡轉換函數接受多個參數成一條鏈的函數,每次取一個參數。柯裡函數是具有多個參數列表定義,如下:
def strcat(s1: String)(s2: String) = s1 + s2
另外,還可以使用以下語法定義柯裡函數:
def strcat(s1: String) = (s2: String) => s1 + s2
以下是語法來調用一個柯裡函數:
strcat("foo")("bar")
可以根據柯裡函數需求定義兩個以上的參數。讓我們以一個完整的例子來說明柯裡的概念:
object Test { def main(args: Array[String]) { val str1:String = "Hello, " val str2:String = "Scala!" println( "str1 + str2 = " + strcat(str1)(str2) ) } def strcat(s1: String)(s2: String) = { s1 + s2 } }
當上述代碼被編譯和執行時,它產生了以下結果:
C:/>scalac Test.scala C:/>scala Test str1 + str2 = Hello, Scala! C:/>