关于受保护的[some_scope]和scala中的继承的工作的混淆

发布于 2024-11-30 10:54:36 字数 420 浏览 1 评论 0原文

这个问题是关于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 中运行此代码。 这可能是什么原因?这两个代码不是一样的吗?

This question is about protected scope of scala. Following code runs perfectly.

//In firstfile.scala

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

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

But when I put package B in some other file,then compilation fails saying not found value a

// In secondfile.scala

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

I am running this code in intellij.
what can be the reason of this? Are not the two codes same?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奶茶白久 2024-12-07 10:54:36

我想你已经发现了一个错误。我可以使用 Scala IDE 2.0.0-beta9 和 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

I think you've found a bug. I can reproduce it in Eclipse with Scala IDE 2.0.0-beta9 with Scala 2.9.0-1. First, let's create Foo.scala:

package a

class Foo {
  protected[Foo] var x = 0
}

and then Bar.scala:

package b

class Bar extends a.Foo {
  println(x) // Error: Not found: value x
}

Eclipse telling us, there is an error. But after cleaning a project this error disappears. And I checked, with scalac everything compiles with first attempt (who would doubt).

Update:

I've opened a ticket #1000567 on Scala IDE bugtracker regarding this issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文