我正在尝试使用 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
上调用它.
最佳答案
您正在尝试调用方法 isOk
在 MyClass
的基类上和 Boolean
(Any
)。
试试这个:
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
关于斯卡拉 - Option.getOrElse() "type erasure"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700744/