首页 > 解决方案 > scala:使用函数定义

问题描述

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

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 /

我确信这是基本的,但我有点困惑。

标签: scalamath

解决方案


在第一种情况下,类型归属有助于编译器确定下划线应该代表什么:2 个Double值。(这使得.toDouble演员阵容变得多余且毫无意义。)

第二种情况无法编译,因为没有足够的提示来帮助编译器。

你可以解决这个...

val result1 :FTDoubleDouble_Double =  _ / _

...但是你还有另一个问题。

scala.math.log(result1)  //error

math.log()将 aDouble作为传入参数,而您没有。

也许这就是你想要的:

val _dividedByThenLog: FTDoubleDouble_Double =
  (d1 :Double, d2 :Double) => scala.math.log(d1 / d2)

推荐阅读