scala:使用函数定义

时间:2018-09-19 07:00:34

标签: scala math

在下面的代码中,第一个函数编译。第二个编译。

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 /

我确定这是基本知识,但我有些困惑。

1 个答案:

答案 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)