gpt4 book ai didi

scala - 将特征混合到包对象中两次

转载 作者:行者123 更新时间:2023-12-02 20:50:17 35 4
gpt4 key购买 nike

虽然这按预期工作:

trait A
trait B extends A
object C extends A with B

以下产生涉及特征 B 的非法循环引用:

package cyclictest {
trait A
trait B extends A
}
package object cyclictest extends A with B

那里发生了什么?

最佳答案

错误是正确的。编译器将名称 AB 解析为完全限定名称,因此类型检查器看到的是:

package object cyclictest extends cyclictest.A with cyclictest.B

为了检查包对象定义是否正确,编译器需要知道 AB 的所有成员,但为了知道这一点,它需要知道cyclingtest的成员(因为ABcyclingtest的成员)。然而,这种情况在定义循环测试时发生,因此你有一个无法解决的循环。

第一种情况通过了,因为包 circulartest 没有继承任何东西,它是默认的基于目录的包。

关于scala - 将特征混合到包对象中两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728194/

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