Как преобразовать 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 }
}
Есть ли какой-то лучший способ, который я пропустил?