za pomocą pętli for z prostym opcja działa:Dlaczego opcja wymaga jawnie toList inside dla pętli?
scala> for (lst <- Some(List(1,2,3))) yield lst
res68: Option[List[Int]] = Some(List(1, 2, 3))
Ale zapętlenie nad treścią opcja nie:
scala> for (lst <- Some(List(1,2,3)); x <- lst) yield x
<console>:8: error: type mismatch;
found : List[Int]
required: Option[?]
for (lst <- Some(List(1,2,3)); x <- lst) yield x
^
... chyba, że opcja ta jest wyraźnie konwertowane do listy:
scala> for (lst <- Some(List(1,2,3)).toList; x <- lst) yield x
res66: List[Int] = List(1, 2, 3)
Dlaczego wymagana jest konwersja jawnej listy? Czy to jest idiomatyczne rozwiązanie?
Dlatego dla '(LST <- Niektórzy (List (1,2,3)) get; x <- Option (LST)) wydajność x' działa również. Ciekawy. – sberry