Tant que nous avons un PartialFunction[X,R]
il est très facile de le convertir en une fonction retournant Option[R]
, par exemple.Comment faire pour convertir X => Option [R] en fonction partielle [X, R]
def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
if (f.isDefinedAt(x)) Some(f(x))
else None
Cependant, si la tâche est contraire suppose que j'ai une fonction f
obtenir X
comme argument et le retour Option[R]
en conséquence. Et je veux en faire un PartialFunction[X,R]
. Quel est le meilleur moyen?
Ce que je suis venu avec des regards assez laid à mon goût:
def optfToPf[X,R](f: X => Option[R]) : PartialFunction[X,R] = {
object extractor {
def unapply(x: X): Option[R] = f(x)
}
{ case extractor(r) => r }
}
Y at-il une meilleure façon que je manqué?
duplication possible de [Inverse de la méthode de levée de PartialFunction] (http://stackoverflow.com/questions/5902266/inverse-of-partialfunctions-lift-method) –
@ToddOwen Je suis simplement curieux de savoir ce que "avant" signifie vous dans la phrase "cette question a déjà été posée". Veuillez simplement comparer les dates des deux questions. –
Fermer le vote rétracté. Désolé, ce n'était pas une question de "avant", mais plutôt le fait que l'autre question semblait avoir reçu une meilleure réponse (avec 28 votes). Mais maintenant je remarque que Thayne a donné la même réponse ici. –