gpt4 book ai didi

斯卡拉 - Option.getOrElse() "type erasure"?

转载 作者:行者123 更新时间:2023-12-03 18:07:34 27 4
gpt4 key购买 nike

我正在尝试使用 Option.getOrElse()方法,但它返回 etiher AnyScalaObject而不是 Option 的正确类的实例被参数化了。我找不到有关此问题的任何提及,而且似乎不应该存在。我究竟做错了什么?

class MyClass {

def isOk = true

}

val myVal = Some(new MyClass) // :Option[MyClass]

val check = myVal.getOrElse(false).isOk

无法调用 isOk方法,因为它尝试在 Any 上调用它.

最佳答案

您正在尝试调用方法 isOkMyClass 的基类上和 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com