gpt4 book ai didi

scala - 对象可以从特征推断被覆盖的字段的类型吗?

转载 作者:行者123 更新时间:2023-12-04 12:41:09 25 4
gpt4 key购买 nike

我正在生成一些测试数据如下:

trait Template {
val field1: Map[List[String], Map[Int, List[Boolean]]] //the type is for illustration. Think of it as a 'monstrous type definition'
val field2: Map[List[Int], Map[Double, List[Option[String]]]]
}

object Fixture extends Template {
override val field1 = Map()
override val field2 = Map()
}

这失败并显示消息 value field1 has incompatible type ,同样适用于 field2 ?

我可以通过在 Fixture 中提供类型来修复它明确地,但我试图避免这种情况,因为如果我更改特征内的类型,我将需要将其传播到每个夹具对象。

我的可以吗 object Fixture推断 field1 的类型和 field2来自 trait Template .

最佳答案

我不知道为什么编译器不够聪明,无法为 val 推断出正确的类型,但它会用于 def .您可以通过将初始化代码放入 def 来解决这个问题。

trait Template {
val field1 = field1Init
def field1Init: Map[List[String], Map[Int, List[Boolean]]]
val field2 = field2Init
def field2Init: Map[List[Int], Map[Double, List[Option[String]]]]
}

object Fixture extends Template {
override def field1Init = Map()
override def field2Init = Map()
}

关于scala - 对象可以从特征推断被覆盖的字段的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944821/

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