我想将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
抱歉,你是对的,它不是运行时错误 –