Scalaの匿名関数内の値をバインドするための構文糖はありますか?
-
08-07-2019 - |
質問
書く代わりに
((x: Double) => (((y: Double) => y*y))(x+x))(3)
次のようなものを書きたいです
((x: Double) => let y=x+x in y*y)(3)
Scalaにはこの種の構文糖のようなものがありますか?
解決
実際には、「 val
"」と呼ばれています。 :-)
({ x: Double =>
val y = x + x
y * y
})(3)
ここではもちろん中括弧はオプションです。関数を定義するときは括弧で囲むことを好みます(結局、これはLispではありません)。 val
キーワードは、現在の字句スコープ内の新しいバインディングを定義します。 Scalaは、LispやMLなどの言語とは異なり、ローカルに独自のスコープの定義を強制しません。
実際には、 var
も任意のスコープ内で機能しますが、使用するのは不適切なスタイルと見なされます。
他のヒント
OK、バインディング付きのライナーが1つあります:
({ x:Double => val y = x + x; y * y })(3)
乾杯
所属していません StackOverflow