Doubles
のストリームを、2つのパラメータを取るメソッドにマップする場合、そのうちの1つにデフォルト値があります。私の方法は、私が合格する必要がある唯一の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
どのスカラー版を使用していますか(私は2.11.8 REPLです)?動作を再現できません。 'val pow2 = pow(_) 'はコンパイルエラー' missing parameter type'を取得します。私が 'val pow2:Double => Double = x => pow(x)'と書いても、すべて動作します。 – dveim
あなたは正しいです、それはランタイムエラーではありません –