只要我们有一个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 }
}
有没有更好的办法让我错过呢?
https://stackoverflow.com/questions/1908295
复制相似问题