Solange wir eine PartialFunction[X,R]
haben, ist es sehr einfach, es in eine Funktion zu konvertieren, die Option[R]
, z.Wie konvertiert man X => Option [R] zu PartialFunction [X, R]
def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
if (f.isDefinedAt(x)) Some(f(x))
else None
Was aber, wenn die Aufgabe Gegenteil ist: Angenommen, ich habe eine Funktion f
X
als Argument bekommen und Option[R]
als Ergebnis zurück. Und ich möchte eine PartialFunction[X,R]
daraus machen. Was ist der beste Weg?
Was ich mit Blicken ziemlich hässlich nach meinem Geschmack habe kommen:
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 }
}
Gibt es einen besseren Weg, ich verpasst?
möglich Duplikat von [Inverse of PartialFunction der Lift-Methode] (http://StackOverflow.com/Questions/5902266/Inverse-of-PartialFunctionsLift-Method) –
@ToddOwen Ich bin nur neugierig, was "vor" bedeutet zu Sie in dem Satz "diese Frage wurde zuvor gestellt". Bitte vergleichen Sie einfach die Daten beider Fragen. –
Enge Abstimmung zurückgezogen. Entschuldigung, es ging nicht um "vorher", sondern eher darum, dass die andere Frage (mit 28 Stimmen) besser beantwortet zu sein schien. Aber jetzt merke ich, dass Thayne die gleiche Antwort gegeben hat. –