将现有函数分配给val?

Cor*_*ein 3 functional-programming scala function

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>
Run Code Online (Sandbox Code Playgroud)

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

ste*_*tew 9

因此,函数是第一类值,但是,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
Run Code Online (Sandbox Code Playgroud)