关于受保护 [some_scope] 的工作和 scala 中的继承的困惑
Posted
技术标签:
【中文标题】关于受保护 [some_scope] 的工作和 scala 中的继承的困惑【英文标题】:Confusion regarding working of protected[some_scope] and inheritance in scala 【发布时间】:2011-10-31 03:37:18 【问题描述】:这个问题是关于 scala 的受保护范围。以下代码完美运行。
//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 能找到 A.test 类吗? 是的,如果我不在 test1 类中使用 'a' 字段,它编译得很好,测试的所有其他公共字段都可以在没有任何问题的情况下使用 【参考方案1】:我认为你发现了一个错误。我可以使用 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
一切都在第一次尝试时编译(谁会怀疑)。
更新:
我已经在 Scala IDE bugtracker 上就这个问题开了一张票 #1000567。
【讨论】:
你的意思是它是 intellij IDE 中的一个错误? @codetool 当然,我找不到其他解释。我现在正在 Scala IDE bugtracker 上寻找类似的票证,但仍然没有找到任何东西。 ticket 用于 eclipse 中的 scala ide。但我的错误是在idea intellij中。我该如何举报? @codetool google 在 JetBrains 网站上找到了support page。试试看。以上是关于关于受保护 [some_scope] 的工作和 scala 中的继承的困惑的主要内容,如果未能解决你的问题,请参考以下文章