Iterable [Throwable、String]のいずれかをThrowable、Iterable [String]に減らす必要があります。この操作がかなり一般的かどうかはわかりませんが、Iterable特性には何も見つかりませんでした。だから私は、この機能を書かれている:Iterable [A、B]のいずれかに[A、Iterable [B]]のいずれかを返す
def reduce[A, B](xs: Iterable[Either[A, B]]): Either[A, Iterable[B]] =
xs.collectFirst {
case Left(x) => x
} match {
case Some(x) => Left(x)
case None => Right(xs.collect{case Right(y)=> y})
}
誰もがこの1つはそれがないなら、私はより良い方法を見つけるのを助けることができますか?
など、
Option
秒のリストにPromise
秒sequence
を使用することができます。あなたの入力リストには例えば 'Right [String]'の半分と異種の 'Left [Exception]'の半分が含まれています。例外を1つまたは文字列のリストに減らしたいとします。例えば、ある場合にはどの例外を取るべきですか?入力の10異なる? –あなたは正しいです。私は、他のものを隠す最初の例外(または左の値)のみを考慮したいと思いますが、私の使用例では受け入れられます。 –
これはhttp://stackoverflow.com/questions/7230999/how-to-reduce-a-seqeithera-b-to-a-eitherseqa-seqbの複製です。 – ziggystar