我可以定義以下兩個功能:爲什麼部分函數應用於2個函數,它們以2種不同的方式定義相同的事物會返回不同的結果?
def add(a: Int, b: Int, c: Int) = a + b + c
這導致
add: (a: Int, b: Int, c: Int)Int
和
val add2 = (a: Int, b: Int, c: Int) => a + b + c
這導致
add2: (Int, Int, Int) => Int = <function3>
兩個這些都是做同樣的事情,但以不同的方式定義的函數,我不明白的是,如果我繼續和定義一個部分應用功能如下:
def a = add _
這導致
a: (Int, Int, Int) => Int = <function3>
預期,函數接受3個參數,並返回一個int,但如果我不
def a2 = add2 _
這導致
a2:() => (Int, Int, Int) => Int = <function0>
這似乎是一個函數,它不接受任何參數,並返回一個接受3個Int參數並返回一個Int的函數。爲什麼會發生?有人可以解釋發生了什麼嗎?
感謝
可能重複。有什麼區別?](http://stackoverflow.com/questions/2720486/declaring-functions-two-ways-what-is-the-distinction) – 2012-03-03 14:04:13
重複是第三個相關的鏈接。真的,試着去尋找以前提出的問題 - 這個問題已經被問了很多次。雖然我認爲該鏈接是最接近的副本,但我個人建議[這個答案](http://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala/2530007#2530007)我的深入到主題的底部。 – 2012-03-03 14:05:56
哦,順便說一下,如果你寫'def add2'而不是'val add2',或許你會更清楚。 – 2012-03-03 14:07:07