在下面的代码中,第一个函数编译。第二个不编译。
type FTDoubleDouble_Double = (Double, Double) => Double
val _dividedBy: FTDoubleDouble_Double =
{
_ / _.toDouble
}
val _dividedByThenLog: FTDoubleDouble_Double =
{
val result1 = _ / _.toDouble
scala.math.log(result1)
}
编译错误是
cannot resolve symbol /
我确定这是基本知识,但我有些困惑。
答案 0 :(得分:3)
在第一种情况下,类型说明可帮助编译器弄清楚下划线应代表什么:2个Double
值。 (这使得.toDouble
的转换多余且毫无意义。)
第二种情况无法编译,因为没有足够的提示来帮助编译器。
您可以解决此问题...
val result1 :FTDoubleDouble_Double = _ / _
...但是您还有另一个问题。
scala.math.log(result1) //error
math.log()
将Double
用作您没有的传入参数。
也许这就是您想要的:
val _dividedByThenLog: FTDoubleDouble_Double =
(d1 :Double, d2 :Double) => scala.math.log(d1 / d2)