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)
这样做的正确方法是什么?
因此,函数是第一类值,但是,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)