Utilizzando un ciclo for con una semplice opzione funziona:Perché Option richiede esplicitamente toList inside for loops?
scala> for (lst <- Some(List(1,2,3))) yield lst
res68: Option[List[Int]] = Some(List(1, 2, 3))
Ma loop sul contenuto della facoltà di non fa:
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
^
... a meno che l'opzione è esplicitamente convertito in un elenco:
scala> for (lst <- Some(List(1,2,3)).toList; x <- lst) yield x
res66: List[Int] = List(1, 2, 3)
Perché è necessaria la conversione esplicita dell'elenco? È questa la soluzione idiomatica?
Che è il motivo per cui 'for (LST <- Alcuni (Lista (1,2,3)) get; x <- Opzione (LST)) yield x' funziona anche. Interessante. – sberry