关于在scala中保护[some_scope]和继承的工作的困惑

问题描述:

这个问题关于scala的保护范围。以下代码完美运行。关于在scala中保护[some_scope]和继承的工作的困惑

//In firstfile.scala 

package A{ 
    class test{ 
    protected[test] var a=0 
    } 
} 

package B{ 
    class test1 extends A.test{ 
    println(a) 
    } 
} 

但是当我把程序包B在其他一些文件,然后编译失败说没有找到值

// In secondfile.scala 

import A.test 
package B{ 
    class test1 extends test{ 
    println(a) 
    } 
} 

我运行在的IntelliJ这个代码。 这可能是什么原因?这两个代码不一样吗?

+0

斯卡拉是否会找到类A.test? –

+0

是的,它编译得很好,如果我不使用test1类中的'a'字段,所有其他公共测试领域都可以毫无疑问地使用 – codecool

我想你已经发现了一个错误。我可以在Eclipse中用Scala IDE 2.0.0-beta9 with Scala 2.9.0-1重现它。首先,让我们创建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所有的东西都是第一次编译(谁会怀疑)。

更新:

我在斯卡拉IDE打开错误追踪系统对这个问题一票#1000567

+0

u是指它在intellij IDE中的错误? – codecool

+0

@codetool绝对,我找不到另一个解释。我现在在Scala IDE bugtracker上寻找类似的门票,但是仍然没有找到任何东西。 – 4e6

+0

票是eclipse中的scala ide。但是我的错误在于intellij。我如何报告? – codecool