我想將Doubles
的流映射到一個方法,該方法需要兩個參數,其中一個參數具有默認值。我想使用默認參數,所以我的方法只有1個參數,我需要通過:在地圖中使用默認參數的方法
def pow(x:Double, exponent:Double=2.0) = {
math.pow(x,exponent)
}
我發現了以下工作,但我不明白爲什麼:
val res = (1 to 100).map(_.toDouble).map(pow(_))
我特別困惑,因爲以下不工作(編譯錯誤,因爲有缺少類型的信息):
val pow2 = pow(_)
val res = pow2(2.0)
println(res) // expect 4.0
編譯器無法清楚地干擾爲pow2提供的類型。如果你說val pow2 = pow(_:Double),那麼這個例子就行得通。 – sascha10000
你用什麼scala版本(我的版本是2.11.8 REPL)?無法重現行爲,'val pow2 = pow(_)'得到編譯錯誤'缺少參數類型'。如果我寫'val pow2:Double => Double = x => pow(x)',那麼一切正常。 – dveim
抱歉,你是對的,它不是運行時錯誤 –