给定一个重载函数,以函数作为参数。此参数函数没有参数:Scala:带功能的重载函数作为参数
def func(param:() => Unit): Unit = {
param()
}
def func(param: Int): Unit = {
println(param)
}
在呼吁func
一个匿名函数可以完美运行:
func(() => println("it works"))
使用纯函数失败:
def functionAsParam(): Unit = {
println("it works")
}
func(functionAsParam)
显然,斯卡拉评估functionAsParam
并且不要将该函数本身传递给func
。问题:我如何(作为提供func
的库的用户)通过非匿名函数?
我认为你的话不太正确,在parens。下划线的意思是“把我变成一个功能”。两种方式是一样的。不确定任何人都会使用第一种方式,但如果他们这样做了,他们会在调用风格时使用parens。 http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#method-values – 2014-09-25 21:30:56
感谢您的评论,实际上那些以第一种方式做它的人是我,因为第二方式感觉不那么“直观”。 – Ashalynd 2014-09-25 22:32:28