Je travaille avec des Stream
imbriquées s et que vous souhaitez utiliser la syntaxe de compréhension avec eux:Travailler avec Streams enveloppées dans Options
def handleNestedStream(as : Stream[A]) : Stream[(A, B)] = {
a <- as
b <- makeBs(a)
} yield (a, b)
Cependant, la fonction retourne makeBs
un Option[Stream[B]]
. Je voudrais que le Option
soit déballé automatiquement. En outre, je voudrais que la fonction entière retourne None
si makeBs
échoue. Donc la nouvelle fonction ressemblerait à ceci:
def makeBs(a : A) : Option[Stream[B]] = { ... }
def handleNestedStream(as : Stream[A]) : Option[Stream[(A, B)]] = {
a <- as
b <- makeBs(a)
} yield (a, b)
Le seul changement est le type de la fonction.
Comment puis-je accomplir quelque chose comme ça? Peut StreamingT
de chats ou StreamT
de scalaz aide ici?
Certains types sont flexibles. makeBs
peut être fait pour retourner Stream[Option[B]]
au lieu de Option[Stream[B]]
si cela rendrait les choses plus simples.
Je dois utiliser le type scala standard lib Stream
.