相关疑难解决方法(0)

如何将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
Run Code Online (Sandbox Code Playgroud)

但是,如果任务相反,那该怎么办:假设我有一个函数作为参数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 }
}
Run Code Online (Sandbox Code Playgroud)

我错过了一些更好的方法吗?

scala partialfunction scala-option

22
推荐指数
3
解决办法
2588
查看次数

标签 统计

partialfunction ×1

scala ×1

scala-option ×1