Scala:无法从内部类引用中获取外部类成员

标签 scala inner-classes

我似乎无法从内部类引用中获取外部类成员:

class Outer(st: Int)
{
  val valOut = st
  def f = 4
  class Inner { val x = 5 }
}

object myObj {
val myOut = new Outer(8)
val myIn = new myOut.Inner
val myVal: Int = myIn.valOut//value f is not a member of ... myOut.Inner
val x = myIn.f//value valOut is not a member of ... myOut.Inner
}

我已经在包中尝试过这个,但在 eclipse 工作表中都不起作用。我在 Eclipse 3.7.2 中使用 Scala 2.10.0RC1 和 Scala 插件 2.1.0M2

最佳答案

我不知道你为什么期望它能编译。毕竟,Inner 没有这些成员,只有它的封闭类才有。你可以通过这种方式实现你想要的:

class Outer(st: Int) {
  val valOut = st
  def f = 4
  class Inner {
    val outer = Outer.this
    val x = 5
  }
}

object myObj {
  val myOut = new Outer(8)
  val myIn = new myOut.Inner
  val myVal: Int = myIn.outer.valOut
  val x = myIn.outer.f
}

关于Scala:无法从内部类引用中获取外部类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047083/

相关文章:

json - 如何在使用 Json4s 序列化期间重命名字段?

Java - 使用静态方法中的实例类?

java - 内部类和构造函数

c# - 使用嵌套类作为 Unity3D 组​​件

scala - Spark - 如何将数据帧中定义的规则应用于另一个数据帧

java - 什么样的设计决策会支持 Scala 的 Actor 而不是 JMS?

scala - 模式匹配中的隐式

scala - 有选择地在 JAR 中包含依赖项

java - 当涉及内部类时,Java 继承如何工作

c++ - 从我正在扩展的嵌套类中覆盖方法