加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:38:04 所属栏目:安全 来源:网络整理
导读:只要我们有一个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 [
只要我们有一个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 }
}

有没有更好的方式我错过了?

解决方法

我知道这是一个老线程,但是如果有人遇到这样的话,那么 Function.unlift就是这样做的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读