функция складывания в Scala - PullRequest
1 голос
/ 10 апреля 2020

Ниже функция извлекает 'N' количество элементов из данного списка. Работает как положено. Но я не могу понять, почему ввод функции "[List [A]]" должен быть задан функции foldRight во время ее вызова. "items" уже объявлена ​​с этим типом, и для него вызывается foldRight. Так что это не нужно. Но без него получается синтаксическая ошибка.

Подскажите, пожалуйста, почему ввод обязателен.

def first[A](items: List[A], count: Int): List[A] = {
  items.foldLeft[List[A]](Nil) { (a: List[A], i: A) =>
     if (a.size >= count) a else i :: a
  }.reverse
}

1 Ответ

3 голосов
/ 10 апреля 2020

Из-за Nil. Nil не содержит никакой полезной type информации для использования в логическом выводе. Используйте List.empty[A] вместо Nil, и вы сможете пропустить ввод. Nil - это мономорф c, и вам нужен полиморф c его эквивалента, который на самом деле List.empty[A].

...