而不是写

((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)。 var关键字定义当前词法范围内的新绑定。与Lisp和ML等语言不同,Scala不会强制本地人定义自己的范围。

实际上,<=>也适用于任何范围,但它被认为是不好用的风格。

其他提示

好的,这是带有绑定的一个班轮:

 ({ x:Double => val y = x + x; y * y })(3)

干杯

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top