而不是写作
((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
关键字定义当前词法范围内的新绑定.与Lisp和ML等语言不同,Scala不会强制本地人定义自己的范围.
实际上,它var
也适用于任何范围,但它被认为是不好的使用方式.
好的,这是带有绑定的一个班轮:
({ x:Double => val y = x + x; y * y })(3)
干杯