gpt4 book ai didi

Scala 不能证明依赖于路径的类型是相等的,尽管它应该很清楚?

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

trait A {
type Foo
def bar: Foo = B(this).bar
}

case class B(a: A) extends A {
type Foo = a.Foo
}

我意识到这个例子有点做作,但它不应该编译吗?我收到以下错误:

<console>:9: error: type mismatch;
found : _5.a.Foo where val _5: B
required: A.this.Foo
def bar: Foo = B(this).bar

我意识到我的例子很奇怪,但应该清楚 Foos 是一样的,不是吗?因为“this”是定义 Foo 的路径!

我只需要施放它吗?

最佳答案

以下工作正常:

trait A {
type Foo
def bar: Foo = B(this).bar
}

def B(a: A): A { type Foo = a.Foo } = new A {
type Foo = a.Foo
}

所以看起来编译器在跟踪 BFoo 是什么方面不够聪明。也许您可以说服编译器团队的某个人这是一个错误,但我不会屏住呼吸。

关于Scala 不能证明依赖于路径的类型是相等的,尽管它应该很清楚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143041/

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