で関数を定義するための:DEFまたはVal、私は私の大学でプログラミングパラダイムを学習し、機能をこのように定義された講師により提供されるこのコース材料読んでいるScalaの
val double = (x: Int) => 2 * x
double: Int => Int = <function1>
しかし、私自身の研究からは私が見つけました
def d (x: Int) = 2 * x
d: (x: Int)Int
私はScalaを使い慣れていません。そして、両方の定義は次の結果を与える:
res21: Int = 8
4
をパラメータとして渡すと、 今私の主な質問は、なぜ講師はval
を使って関数を定義するのですか? val
を使用しないと、私が知らないいくつかの利点が追加されます。私は、val
を使って、プログラムの後半でプレースホルダをいくつかの名前にすることを理解していますが、私は間違ってval double = 5
と書くことができました。 この段階では、誰かが別の方法で教えない限り、私は関数を定義するより良い方法を学んだと確信しています。
私はScalaについて何かを述べる資格はありませんが、関数が 'double'として定義された後、実際に' val double = 5'を実行しようとしましたか?一度名前が定義されると、それを再定義することは不可能でなければならないという印象を受けました。いずれにしても、valとdefの両方で同じ結果が得られます。違いは単なる文体です。多くの場合、 'def'を使って関数を定義する方がはっきりしますが、' val'で定義するのが理にかなっています。あなたが不明な場合は、混乱を招く可能性が低いので、 'def'を使うことをお勧めします。 – kqr
はい、私は 'double double 'とタイプし、' res24:Int = 5'を得ました – Emanuel
[Scalaのメソッドと関数の違い](http://stackoverflow.com/questions/2529184) /メソッド間の違いとスカラ関数) –