【问题标题】:Confusion regarding working of protected[some_scope] and inheritance in scala关于受保护 [some_scope] 的工作和 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' 字段,它编译得很好,测试的所有其他公共字段都可以在没有任何问题的情况下使用

标签: scala import intellij-idea packages protected


【解决方案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。试试看。
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 2019-11-07
  • 2019-10-26
  • 2012-04-10
  • 2015-06-17
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
相关资源
最近更新 更多