38

私はScalaが初めてです。「イータ展開」という言葉を聞いたばかりで、メソッドを関数オブジェクトに展開することを大まかに知っています。しかし、それを体系的に紹介する SO のリソースはほとんど見つかりません。

Scala で eta 展開がどのように機能するのか興味があります。eta 拡張が必要な​​シナリオは何ですか? また、Scala ではどのようにeta 拡張が実装されているのでしょうか?

私は大まかに次のような場合を知っています:

def someMethod(x: Int): Int = x * x

someMethod _次のような新しい関数オブジェクトに大まかに変換されます。

new Function1[Int, Int] {
  def apply(x: Int): Int = x * x
}

Scala が行うのはそれだけですか?

4

2 に答える 2