6

而不是写

((x: Double) => (((y: Double) => y*y))(x+x))(3)

我想写一些类似的东西

((x: Double) => let y=x+x in y*y)(3)

Scala 中有没有类似这种语法糖的东西?

4

2 回答 2

14

确实有:它叫做“ val”。:-)

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

大括号在这里当然是可选的,我只是在定义函数时更喜欢它们而不是括号(毕竟,这不是 Lisp)。val关键字在当前词法范围内定义了一个新的绑定。与 Lisp 和 ML 等语言不同,Scala 不强制本地人定义自己的范围。

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

于 2008-11-18T16:41:41.110 回答
6

好的,这是一个带装订的衬里:

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

干杯

于 2008-11-19T02:44:17.197 回答