gpt4 book ai didi

scala - 使用扩展类中的路径相关类型时出错

转载 作者:行者123 更新时间:2023-12-02 08:24:49 25 4
gpt4 key购买 nike

我偶然发现了非描述性错误并且找不到,scala 编译器需要我做什么。

class Store {
case class Box[T](box : T)
def box[T](b : T) = Box[T](b)
def unbox[T](b : Box[T]) : T = b.box
}

class Parent(val s : Store) {
val box : s.Box[Int] = s.box[Int](2)
}

class Child(s : Store) extends Parent(s) {
val unbox : Int = s.unbox[Int](box)
}

出现以下错误:

DependentPassing.scala:16: error: type mismatch;
found : Child.this.s.Box[Int]
required: Child.this.s.Box[Int]

val unbox : Int = s.unbox[Int](box)

相同类型如何不匹配?

注意:存储无法修改,它按原样运行(请参阅 scala.reflect.macros.Context)。所以可能只调整后面的代码

最佳答案

只需更改 Child ctor 中的 var 名称,留下 s.unbox:

class Child(d : Store) extends Parent(d) {
val unbox : Int = s.unbox[Int](box)
}

它会起作用的。

你有那个的原因是因为 scala 认为 Child.sParent.s 不同的类型,所以你有所有路径相关的类型也不同

关于scala - 使用扩展类中的路径相关类型时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33177909/

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