只要我们有 a 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 }
}
我错过了一些更好的方法吗?