給定一個重載函數,以函數作爲參數。此參數函數沒有參數: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