我有Eithers慣用Scala的方式來Eithers列表到左或右視列表內容
val list: List[Either[String, Int]] = List(Right(5), Left("abc"), Right(42))
結果列表,我想Right
如果一切都在名單是Right
否則我想要一個Left
。這聽起來像列表應該有偏見(例如,使用Try
),但我們假設它不是或不應該。
生成的Right
或Left
的內容將始終保持不變(例如一個字符串,請參見打擊) - 只有Container纔會有所不同。例如。有了上面的列表,我們想從這個列表創建一個字符串,所以結果應該是Left
,比如Left("Right(5) -> Left(abc) -> Right(42)")
。如果我們有另一個Right(12)
而不是Left("abc")
它應該是Right("Right(5) -> Right(12) -> Right(42)")
。
我可以手動檢查是否有至少一個Left
在列表中,分支的,如果創建一個Left
或Right
的結果,但我想知道:是否有更多的斯卡拉般的方式做到這一點?
什麼空列表,是一個'Right' ? – Bergi
@Bergi仍然可以算作'Right',只要所有其他值也是'Right',那麼輸出仍然應該是'Right'的'Right' – valenterry