首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将X => Option[R]转换为PartialFunction[X,R]

如何将X => Option[R]转换为PartialFunction[X,R]
EN

Stack Overflow用户
提问于 2009-12-15 23:41:53
回答 2查看 3K关注 0票数 24

只要我们有一个PartialFunction[X,R],就很容易把它转换成一个返回Option[R]的函数,例如

代码语言:javascript
运行
复制
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]。最好的方法是什么?

我想出来的东西看起来很难看:

代码语言:javascript
运行
复制
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 }
}

有没有更好的办法让我错过呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1908295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档