Я смущен. В TraversableLike
существует функция flatMap
с сигнатурой
flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Iterable[B]
Однако я могу использовать его таким образом
scala> Iterable(1,2,3,4,5).flatMap{i=>if (i%2==0) {None} else {Some(i)}}
res1: Iterable[Int] = List(1, 3, 5)
Почему это возможно? Как Option
преобразован в GenTraversableOnce
? Это не похоже на подкласс...