scala: использование определений функций - PullRequest
0 голосов
/ 19 сентября 2018

В приведенном ниже коде первая функция компилирует .Второй не не компилируется.

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 голосов
/ 19 сентября 2018

В 1-м случае приписывание типа помогает компилятору выяснить, что символы подчеркивания должны представлять: 2 Double значения.(Что делает .toDouble приведение лишним и бессмысленным.)

2-й случай не компилируется, потому что не хватает подсказок, чтобы помочь компилятору.

Вы можете это исправить ...

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...