【发布时间】:2010-09-22 19:51:00
【问题描述】:
而不是写
((x: Double) => (((y: Double) => y*y))(x+x))(3)
我想写一些类似的东西
((x: Double) => let y=x+x in y*y)(3)
Scala 中是否存在类似这种语法糖的东西?
【问题讨论】:
标签: scala anonymous-function syntactic-sugar
而不是写
((x: Double) => (((y: Double) => y*y))(x+x))(3)
我想写一些类似的东西
((x: Double) => let y=x+x in y*y)(3)
Scala 中是否存在类似这种语法糖的东西?
【问题讨论】:
标签: scala anonymous-function syntactic-sugar
确实有:它叫做“val”。 :-)
({ x: Double =>
val y = x + x
y * y
})(3)
大括号在这里当然是可选的,我只是在定义函数时更喜欢它们而不是括号(毕竟,这不是 Lisp)。 val 关键字在当前词法范围内定义了一个新的绑定。与 Lisp 和 ML 等语言不同,Scala 不强制本地人定义自己的范围。
实际上,var 也适用于任何范围,但使用它被认为是不好的风格。
【讨论】:
好的,这是带装订的唯一衬里:
({ x:Double => val y = x + x; y * y })(3)
干杯
【讨论】: