Wie konvertiere ich X => Option [R] nach PartialFunction [X, R]
Solange wir eine habenPartialFunction[X,R]
es ist sehr einfach, es in eine Funktion umzuwandeln, die zurückkehrtOption[R]
, z.B.
def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
if (f.isDefinedAt(x)) Some(f(x))
else None
Was aber, wenn die Aufgabe umgekehrt ist: Angenommen, ich habe eine Funktionf
bekommenX
als Argument und RückkehrOption[R]
als Ergebnis. Und ich möchte eine machenPartialFunction[X,R]
heraus. Was ist der beste Weg?
Was ich mir ausgedacht habe, sieht für meinen Geschmack ziemlich hässlich aus:
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, den ich verpasst habe?