このスレッドに関連
これら2つの定義の違いについてはまだはっきりしていません。
val foo = (arg: Type) => {...}
def(arg:Type) = {...}
私が理解しているように:
1)valバージョンは1回バインドされ、コンパイル時
に単一のFunction1インスタンスが作成さ
れ、メソッドパラメーターとして渡すことができます。
2)defバージョンは、呼び出しごとに作成された新しいメソッドインスタンスの呼び出しごとに新たにバインドされます。
上記が当てはまる場合、実行する操作が実行時の状態に依存しない場合に、なぜdefバージョンを選択するのでしょうか。
たとえば、サーブレット環境では、接続しているクライアントのIPアドレスを取得したい場合があります。この場合、もちろんコンパイル時に接続されたクライアントがないため、defを使用する必要があります。
一方、コンパイル時に実行する操作をよく知っており、不変で実行できますval foo = (i: Type) => {...}
経験則として、実行時の状態の依存関係がある場合にのみdefsを使用する必要がありますか?
明確にしてくれてありがとう