Как исправить хвост списка с помощью рекурсии матча?[Scala] - PullRequest
0 голосов
/ 21 октября 2018

Эта функция принимает список и одну из двух функций ниже и должна соответствовать каждому элементу в списке.

val sqrt = (x: Double) => x * x
val doubleValue = (x: Double) => 2 * x

val yoman = (list: List[Double], func: Function[Double, Double]) => list match {
  case head :: tail => func(head) :: yoman(tail, func)
  case Nil => list
}

yoman(List(3.0, 4.0, 99.0), sqrt)
yoman(List(-5.0, 1.0, 9.0), doubleValue)

Теперь у меня проблема с первым случаем:

Error:(5, 39) recursive lazy value yoman needs type
  case head :: tail => func(head) :: yoman(tail, func)
                                     ^

1 Ответ

0 голосов
/ 21 октября 2018

для рекурсивных функций необходимо указать тип возвращаемого значения

  val yoman: (List[Double], Function[Double, Double]) => List[Double] = (list: List[Double], func: Function[Double, Double]) => list match {
    case head :: tail => func(head) :: yoman(tail, func)
    case Nil => list
  }

, как вы можете видеть, вы объявляете yoman, за которым следует тип (функция, которая получила список и другую функцию, и возвращаетсписок двойной), а потом и само тело

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...