Scala 中是不是有用于在匿名函数中绑定值的语法糖?
Posted
技术标签:
【中文标题】Scala 中是不是有用于在匿名函数中绑定值的语法糖?【英文标题】:Is there syntactic sugar for binding a value inside an anonymous function in Scala?Scala 中是否有用于在匿名函数中绑定值的语法糖? 【发布时间】: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 中是否存在类似这种语法糖的东西?
【问题讨论】:
【参考方案1】:确实有:它叫做“val
”。 :-)
( x: Double =>
val y = x + x
y * y
)(3)
大括号在这里当然是可选的,我只是在定义函数时更喜欢它们而不是括号(毕竟,这不是 Lisp)。 val
关键字在当前词法范围内定义了一个新的绑定。与 Lisp 和 ML 等语言不同,Scala 不强制本地人定义自己的范围。
实际上,var
也适用于任何范围,但使用它被认为是不好的风格。
【讨论】:
谢谢 :) 我以为我已经尝试过了,但我一定是语法错误。有没有办法把所有东西都放在一条线上? @Germán 有单行版本。【参考方案2】:好的,这是带装订的唯一衬里:
( x:Double => val y = x + x; y * y )(3)
干杯
【讨论】:
以上是关于Scala 中是不是有用于在匿名函数中绑定值的语法糖?的主要内容,如果未能解决你的问题,请参考以下文章