我試圖結合到被包裹在一個Option
數組:Scala中結合包裹元件:選項[數組[INT]]
val a = Option(Array(1, 2, 3))
val b = Option(Array(4,5))
val q = for {
x <- a
y <- b
} yield x ++ y
的問題是,如果是b
None
它返回None
甚至雖然我想有a
。如果a
是None
,編譯器會抱怨++
不是Nothing
的成員(儘管我期望收到b
)。這是可以用標準庫嗎?還是必須查看貓或斯卡拉斯的半羣?
我試着在貓以下,但不能得到它的工作:
Semigroup[Option[Array[Int]]].combine(a,b) // === a |+| b
它告訴我說:
could not find implicit value for parameter ev: cats.kernel.Semigroup[Option[Array[Int]]]
產生的類型應該是相同類型的a
和b
。
我試圖用a ++ b直接在repl中,它適用於兩種情況,即a = None或b = None。 – Samar