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

Scala Option的collect方法不喜欢我的PartialFunction

发布时间:2020-12-16 18:23:59 所属栏目:安全 来源:网络整理
导读:我想我错过了一些东西: scala Some(1) collect ({ case n if n 0 = n + 1; case _ = 0})res0: Option[Int] = Some(2)scala None collect ({ case n if n 0 = n + 1; case _ = 0}) console:6: error: value is not a member of Nothing None collect ({ case
我想我错过了一些东西:

scala> Some(1) collect ({ case n if n > 0 => n + 1; case _ => 0})
res0: Option[Int] = Some(2)

scala> None collect ({ case n if n > 0 => n + 1; case _ => 0})   
<console>:6: error: value > is not a member of Nothing
       None collect ({ case n if n > 0 => n + 1; case _ => 0})
                                 ^
<console>:6: error: value + is not a member of Nothing
       None collect ({ case n if n > 0 => n + 1; case _ => 0})

为什么会发生这种错误?我想我误解了收集如何运作……

解决方法

除非您指定,否则文字None的类型为Option [Nothing].这是必要的,因为None必须是所有类型Option [_]的有效成员.如果你改写了

(None:Option[Int]) collect ({ case n if n > 0 => n + 1; case _ => 0})

要么

val x:Option[Int] = None
x collect ({ case n if n > 0 => n + 1; case _ => 0})

那么编译器就能输入检查你的收费电话

(编辑:李大同)

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

    推荐文章
      热点阅读