3

違いは何ですか

def plusOne(n: Int) = n + 1

val plusOne = (n : Int) => n + 1
4

2 に答える 2

4

実際には、どちらも関数です。

最初のものは、宣言されている場所に応じて、メソッドまたはローカル関数です。2 つ目は関数値で、実行時にインスタンス化されるオブジェクトです。メソッド、ローカル関数、関数値、および関数リテラルはすべて、Scala の関数のフレーバーです。

このトピックに関する Martin Odersky の本の章については、こちらを参照してください: http://www.artima.com/pins1ed/functions-and-closures.html

于 2012-08-04T08:43:59.120 に答える
4

実際の違いは、前者が「メソッド」であり、後者が「関数」であり、Scala ではこれら 2 つのことが驚くほど異なるということです。

たとえば、Scala のメソッドと関数の違いを確認できます。

于 2012-08-03T16:20:07.100 に答える