【发布时间】:2012-05-28 20:50:02
【问题描述】:
我正在尝试使用 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 上调用它。
【问题讨论】:
-
类型“擦除”不是这里的问题,而是子类型带来的极端表达能力有时过于宽松,无法捕捉到你的错误。
标签: scala option type-erasure