这个问题是关于 scala 的 protected 范围的。以下代码运行完美。
//In firstfile.scala
package A{
class test{
protected[test] var a=0
}
}
package B{
class test1 extends A.test{
println(a)
}
}
但是当我把包 B 放在其他文件中时,编译失败说没有找到值 a
// In secondfile.scala
import A.test
package B{
class test1 extends test{
println(a)
}
}
我在 intellij 中运行这段代码。 这可能是什么原因?这两个代码不一样吗?
最佳答案
我认为您发现了一个错误。我可以使用 Scala IDE 2.0.0-beta9 with Scala 2.9.0-1
在 Eclipse 中重现它。首先,让我们创建 Foo.scala:
package a
class Foo {
protected[Foo] var x = 0
}
然后是 Bar.scala:
package b
class Bar extends a.Foo {
println(x) // Error: Not found: value x
}
Eclipse 告诉我们,有一个错误。但清理项目后,此错误消失。我用 scalac
检查了第一次尝试就编译的所有内容(谁会怀疑)。
更新:
我开了工单#1000567关于这个问题的 Scala IDE bugtracker。
关于scala - 关于 protected[some_scope] 和 scala 中继承工作的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130947/