【问题标题】: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 中是否存在类似这种语法糖的东西?

【问题讨论】:

    标签: scala anonymous-function syntactic-sugar


    【解决方案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)
    

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-10
      • 2013-07-19
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2011-12-23
      相关资源
      最近更新 更多