Iは、次の2つの機能を定義することができます。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 _
を行う場合、これは
になり機能パラメータを取らず、3つのIntパラメータを取り、Intを返す関数を返す関数のようです。なぜこれが起こるのですか?誰かが何が起こっているか説明できますか?
おかげ
が重複する可能性が。何が区別されますか?](http://stackoverflow.com/questions/2720486/declaring-functions-two-ways-what-is-the-distinction) –
重複は3番目の関連リンクでした。本当に、以前に尋ねられた質問を探してみてください - これは何度も何度も尋ねられました。私はリンクが最も重複していると思うが、私は個人的には[この回答](http://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala/2530007#2530007)私の被験者の底に到達する。 –
ところで、 'val add2'の代わりに' def add2'を書いたほうがはっきりしているでしょう。 –