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}) 那么编译器就能输入检查你的收费电话 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |