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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage