我想將現有函數分配給變量。據this網站,它是一樣簡單:將現有函數分配給變量
val p = scala.math.pow(_, _)
pow: (Double, Double) => Double = <function2>
但是當我嘗試做同樣的事情在我的代碼,這是行不通的。
def main(args: Array[String]) = {
val p = scala.math.min(_, _)
val func = if (args(0).equalsIgnoreCase("min")) math.min(_,_) else math.max(_,_)
}
我認爲這可能是由於使用的if
並在同一行else
條件,但價值分配變量p
時以及我得到的錯誤。
錯誤我得到:
缺少的參數類型爲擴展功能((X $ 1,X $ 2)=> scala.math.min(X $ 1,X $ 2))
爲什麼它不適合我,我該如何解決它?
'val p = scala.math.min _' – dmitry
@dmitry爲什麼pow需要2個下劃線,min和max只能用1來完成?即如何知道1個下劃線是否足夠? –
我建議在這裏閱讀最高票數的答案,特別是結尾部分。另外scala.math.pow _單下劃線也可以。知道什麼是足夠的簡短答案是看看它是否成功編譯:) http://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala – Tanjin