特に次の例のように高階関数を呼び出す場合、scala での 'block' {...} コンストラクトのさまざまな使用法に少し混乱しています。
def higherOrder(func: Int => Int): Int = {
func(4)
}
val f = ((x: Int) => x*x)
次に、次のように higherOrder を呼び出すことができます。
higherOrder(f)
、 またhigherOrder {f}
、 またhigherOrder { x => x*x }
(1)は明らかですが、(2)と(3)の構文がコンパイラによってどのように解析されるかについて頭を悩ませることはできません言語仕様に関して、(2)と(3)が何に対応するかを誰かが説明できますか?