Il n'y a pas de fonction intégrée dans l'API Scala pour soulever un PartialFunction
à Either
.Comment soulever un ou l'autre
Voici ma version:
def liftToEither[A, B, C](pf: PartialFunction[A, B])(c: A => C) : A => Either[C, B] = { a =>
if (pf.isDefinedAt(a)) Right(pf(a)) else Left(c(a))
}
Y at-il une meilleure façon?
Vous ne pouvez pas utiliser intégré 'Either.cond (pf.isDefinedAt (a), pf (a), c (a)) '? ou peut-être ai-je mal compris votre question? – ale64bit
@kaktusito Oui, cela fonctionnerait. Mais tout comme la proposition OPs, elle évaluera 'pf' deux fois, ce qui peut être indésirable. – gzm0
Est-ce que cela répond à votre question? –