scala - 关于 protected[some_scope] 和 scala 中继承工作的困惑

标签 scala import intellij-idea package protected

这个问题是关于 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/

相关文章:

c# - 如何将应用程序设置导出到可移植文件中? [C#]

java - 在 IntelliJ 中添加一个 servlet,说包 javax.servlet.http 不存在

JavaFX CSS 错误(属性样式表不存在)

java - 原生 Java 类的类型问题

java - 如何使用 OpenCV matchShapes 检查两个轮廓是否匹配?

import - M2T Xpand 与现有的 ecore 模型

mysql - 将 CSV 导入 MySQL 和

java - 无法使用 Intellij Idea 连接到 openshift

java - 如何打包成.jar java main + jruby编译类+ ruby​​脚本?

scala - Scala 中的动态提取器