是否可以访问匿名外部类?

时间:2017-07-21 16:02:55

标签: scala class inner-classes

简单的方法是在外部类体中指定this声明,以定义每个类的唯一名称。但是我想在不修改外部类的情况下编写访问权限。

代码示例:

trait Test {
  def z = new Test {
    val a = 1
    def y = new Test {
      val a = false
      def x = new Test {
        val b = 2 * a
      }
    }
  }
}

我在定义outer.outer.a

时想要访问val b而不是外部。

如何指定匿名类的this?如果是Named,我可以写Named.this,但是匿名类没有名字。

1 个答案:

答案 0 :(得分:0)

这可以通过self types

来实现
trait Test { greatGrandparent =>
  def z = new Test { grandparent =>
    val a = 1
    def y = new Test { parent =>
      val a = false
      def x = new Test {
        val b = 2 * grandparent.a
      }
    }
  }
}