書く代わりに
((x: Double) => (((y: Double) => y*y))(x+x))(3)
のようなものを書きたいと思います
((x: Double) => let y=x+x in y*y)(3)
Scala にこの種のシンタックス シュガーのようなものはありますか?
書く代わりに
((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、これがバインディング付きのワンライナーです:
({ x:Double => val y = x + x; y * y })(3)
乾杯