Ich versuche zu Arrays zu verbinden, die in einem Option
gewickelt werden:gewickelte Elemente in Scala Kombination: Option [Array [Int]]
val a = Option(Array(1, 2, 3))
val b = Option(Array(4,5))
val q = for {
x <- a
y <- b
} yield x ++ y
Das Problem ist, dass, wenn b
None
ist es kehrt None
sogar obwohl ich gerne a
haben würde. Und wenn a
None
ist, beschwert sich der Compiler, dass ++
kein Mitglied von Nothing
ist (obwohl ich erwarte, b
zu erhalten). Ist das mit der Standardbibliothek machbar oder muss ich Halbgruppen in Cats oder Scalaz betrachten?
habe ich versucht, die folgende in Katzen, konnte es aber nicht funktionieren:
Semigroup[Option[Array[Int]]].combine(a,b) // === a |+| b
Es sagt mir, dass:
could not find implicit value for parameter ev: cats.kernel.Semigroup[Option[Array[Int]]]
Der resultierende Typ die gleichen wie die Typen von a
sein sollte und b
.
ich versuchte mit a ++ b direkt in repl und es funktionierte für beide Fälle, d. H. A = keine oder b = keine. – Samar