Как преобразовать X => Option [R] в PartialFunction [X, R]

Пока у нас естьPartialFunction[X,R] Это'очень легко преобразовать его в функцию, возвращающуюOption[R]например,

def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
    if (f.isDefinedAt(x)) Some(f(x))
    else None

Однако, что, если задача противоположна: предположим, у меня есть функцияf получениеX в качестве аргумента и возвращенияOption[R] в следствии. И я хочу сделатьPartialFunction[X,R] из этого. Какой самый лучший способ?

Что я'на мой вкус мы придумали:

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 }
}

Есть ли какой-то лучший способ, который я пропустил?

Ответы на вопрос(3)

Ваш ответ на вопрос