我是新來的Scala,下面有三個的函數定義混亂對我說:斯卡拉:函數聲明的區別
首先
scala> def sum = (a: Int, b: Int) => a + b
sum: (Int, Int) => Int
二
scala> def sum (a: Int, b: Int) = a + b
sum: (a: Int, b: Int)Int
第三
scala> val sum = (a: Int, b: Int) => a + b
sum: (Int, Int) => Int = <function2>
我知道第二個是方法,第三個是函數文字。 我的疑惑是第一個聲明,這是一個正常的函數還是它是我不明白的一些其他語法?一個解釋將不勝感激。
編輯
此外,當我嘗試使用第一個聲明,我得到這個創建一個部分應用功能:
scala> val anotherSum = sum _
anotherSum:() => (Int, Int) => Int = <function0>
對此我預計Function2
類型爲sum
有2個參數。
希望這有助於:http://www.tutorialspoint.com/scala/scala_closures.htm。在周圍挖掘scala閉包,, – Pavel
「我知道第二個是正常功能」 - 不,第二個是方法,而不是函數。第一個也是一個方法(儘管返回一個函數)。只有第三個是功能。 –
@JörgWMittag謝謝,我更新了我的問題。 –