Scala:从构造函数中的内部 class 获取外部 class
Scala: get outer class from inner class in constructor
我有一个匿名内部 class,我想在构造函数中访问它的(匿名)外部 class。所以我想实现这个方法:
new Outer {
new Inner {
}
}
class Outer {
}
class Inner {
def outerClass: Outer = ???
}
有什么反对这种方法的?
new Outer { self =>
new Inner(self) {
}
}
class Outer {
}
class Inner[A](outerClass:A) {
println("CLASS: " + outerClass.getClass)
}
你 可以 使用隐式很容易做到这一点(我假设 Outer
和 Inner
都可以修改,但使用它们的代码应该看起来像在问题中)。声明:
class Outer {
implicit def o: Outer = this
}
class Inner(implicit val outerClass: Outer) {
}
用法:
new Outer {
new Inner {
// can use outerClass here
}
}
或
new Outer {
val inner = new Inner {
}
// inner.outerClass
}
我可以想象这对 DSL 很有用,但请确保您(r API 的用户)确实首先需要它!
我有一个匿名内部 class,我想在构造函数中访问它的(匿名)外部 class。所以我想实现这个方法:
new Outer {
new Inner {
}
}
class Outer {
}
class Inner {
def outerClass: Outer = ???
}
有什么反对这种方法的?
new Outer { self =>
new Inner(self) {
}
}
class Outer {
}
class Inner[A](outerClass:A) {
println("CLASS: " + outerClass.getClass)
}
你 可以 使用隐式很容易做到这一点(我假设 Outer
和 Inner
都可以修改,但使用它们的代码应该看起来像在问题中)。声明:
class Outer {
implicit def o: Outer = this
}
class Inner(implicit val outerClass: Outer) {
}
用法:
new Outer {
new Inner {
// can use outerClass here
}
}
或
new Outer {
val inner = new Inner {
}
// inner.outerClass
}
我可以想象这对 DSL 很有用,但请确保您(r API 的用户)确实首先需要它!