2

内部クラスの参照から外部クラスのメンバーを取得できないようです:

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ワークシートではどちらも機能しません。Scalaプラグイン2.1.0M2を使用してEclipse 3.7.2でScala 2.10.0RC1を使用しています

4

1 に答える 1

13

これがコンパイルされることを期待する理由がわかりません。結局のところ、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
}
于 2012-10-24T10:15:47.040 に答える