Scala – Option.getOrElse()“类型擦除”?
发布时间:2020-12-16 18:27:37 所属栏目:安全 来源:网络整理
导读:我试图使用Option.getOrElse()方法,但它返回Etiher Any或 ScalaObject,而不是Option参数化的正确类的实例.我找不到任何关于这个问题的提及,它似乎不应该存在.我究竟做错了什么? class MyClass { def isOk = true}val myVal = Some(new MyClass) // :Option[
我试图使用Option.getOrElse()方法,但它返回Etiher Any或
ScalaObject,而不是Option参数化的正确类的实例.我找不到任何关于这个问题的提及,它似乎不应该存在.我究竟做错了什么?
class MyClass { def isOk = true } val myVal = Some(new MyClass) // :Option[MyClass] val check = myVal.getOrElse(false).isOk 无法调用isOk方法,因为它尝试在Any上调用它. 解决方法
您正尝试在MyClass和Boolean(Any)的基类上调用方法isOk.
试试这个: scala> class MyClass(b: Boolean) { def isOk = b } defined class MyClass scala> val myVal = Some(new MyClass(true)) myVal: Some[MyClass] = Some(MyClass@35d56bbe) scala> myVal.map{_.isOk}.getOrElse(false) res0: Boolean = true scala> myVal.getOrElse(new MyClass(false)).isOk res1: Boolean = true (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |