可以說我們有一個函數def fun(x: X): X => Y
,我們通過fun _
而不是fun
將這個函數作爲參數傳遞給另一個函數。我明白fun _
實際上是一個函數值,而fun
是指一個函數定義。在Scala中,樂趣_和樂趣之間的區別是什麼
例如讓:
val a = List(1,2,3,4)
def fun(x: Int) = {println(x); x + 1}
然後運行:
//This line works
a.map(fun _)
//This one also works, even though "fun" is not a function value
a.map(fun)
它們具有相同的輸出:
1
2
3
4
resX: List[Int] = List(2, 3, 4, 5)
在大多數情況下,他們似乎工作一樣,是有沒有任何函數值不等於函數定義的例子?
'fun'是一種方法,而不是一種功能。區別很重要。 – rightfold
的可能的複製[什麼是Scala的ETA膨脹?](http://stackoverflow.com/questions/39445018/what-is-the-eta-expansion-in-scala) – Haspemulator
發佈一個實際的例子示出了「我們通過這個函數作爲另一個函數的參數,使用'fun _'而不是'fun'「和」大部分它們看起來都是一樣的「。這對我們來說會更容易。 http://stackoverflow.com/help/mcve – YoungSpice