【问题标题】:Assign an existing function to a val?将现有函数分配给 val?
【发布时间】:2015-05-21 22:33:09
【问题描述】:

Scala 的首页说

函数是一流的对象。用有保证的类型编写它们 安全。在任何地方使用它们,将它们传递给任何东西。

但我似乎无法将函数存储在 val 中,就像在 Scala 中存储其他一流对象一样。

scala> def myFunction = { println("hello world") }
myMethod: Unit

scala> myFunction
hello world

scala> val myVal = myFunction
hello world
myVal: Unit = ()

scala> myVal

scala>

这样做的正确方法是什么?

【问题讨论】:

标签: function scala functional-programming


【解决方案1】:

因此,函数是一等值,但是,def 创建的是方法,而不是函数。您可以使用“eta-expansion”将任何方法转换为函数,方法是在方法名称后面附加_

scala> def myFunction = { println("hello world") }
myFunction: Unit

scala> myFunction _
res0: () => Unit = <function0>

scala> res0()
hello world

scala> val myVal = myFunction _
myVal: () => Unit = <function0>

scala> myVal
res2: () => Unit = <function0>

scala> myVal()
hello world

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 2021-10-25
    • 2014-08-07
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多