質問

書く代わりに

((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)

乾杯

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top