В следующем коде из "функционального программирования в скале", что означает _
здесь? Я думаю, что он представляет результат последовательности (t), но когда я заменил его на последовательность (t), он даетмне ошибка компиляции. Почему это? Что я могу сделать, чтобы сделать это _ явным?
Редактировать: Я запутался, что если это _
следует расширить в результат последовательности (t), перечислите всерегистр подчеркивания здесь здесь не помогает, я уже рассмотрел его.
@ def sequence[A](a: List[Option[A]]): Option[List[A]] =
a match {
case Nil => Some(Nil)
case h :: t => h flatMap (hh => sequence(t) map (hh :: _))
}
defined function sequence
@
@ sequence(List(Some(1), Some(2))
)
res1: Option[List[Int]] = Some(List(1, 2))
Замените _
на последовательность (t)
def sequence[A](a: List[Option[A]]): Option[List[A]] =
a match {
case Nil => Some(Nil)
case h :: t => h flatMap (hh => sequence(t) map (hh :: sequence(t)))
}
cmd4.sc:4: value :: is not a member of Option[List[A]]
case h :: t => h flatMap (hh => sequence(t) map (hh :: sequence(t)))
^
Compilation Failed