Jaki jest idiomatyczne sposób stosowania funkcji A => Try[B]
na List[A]
i powrócić bądź pierwszy wynik udany Some[B]
(to zwarcie) lub jeśli wszystko zawiedzie, zwraca None
Scala: Spróbuj do pierwszego sukcesu na liście
Chcę zrobić coś takiego:
val inputs: List[String] = _
def foo[A, B](input: A): Try[B] = _
def main = {
for {
input <- inputs
} foo(input) match {
case Failure(_) => // continue
case Success(x) => return Some(x) //return the first success
}
return None // everything failed
}
Powiązane pytanie. Co jeśli chciałbym albo najpierw "Sukces [A]", albo ostatnią "awarię"? – pathikrit
@wrick: 'val tmp = inputs.toStream.map (foo); tmp.find (_. isSuccess) orElse tmp.lastOption' – senia