나는 익명의 내부 클래스를 가지고 있으며, 생성자에서 (익명) 외부 클래스에 액세스하려고합니다. 그래서이 방법을 구현하고 싶습니다 :스칼라 : 생성자의 내부 클래스에서 외부 클래스 가져 오기
new Outer {
new Inner {
}
}
class Outer {
}
class Inner {
def outerClass: Outer = ???
}
나는 익명의 내부 클래스를 가지고 있으며, 생성자에서 (익명) 외부 클래스에 액세스하려고합니다. 그래서이 방법을 구현하고 싶습니다 :스칼라 : 생성자의 내부 클래스에서 외부 클래스 가져 오기
new Outer {
new Inner {
}
}
class Outer {
}
class Inner {
def outerClass: Outer = ???
}
당신은 이 쉽게 충분이 사용 implicits을 수행 할 수 있습니다 (I는 모두 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의 사용자가) 실제로 처음 하시겠습니까 될 수 있습니다!
이 접근법에 대해 말한 것은 무엇입니까?
new Outer { self =>
new Inner(self) {
}
}
class Outer {
}
class Inner[A](outerClass:A) {
println("CLASS: " + outerClass.getClass)
}
스택 추적 마법 없이는 불가능합니다. 어쩌면 우리가 당신의 문제에 대한 더 나은 해결책을 제안 할 수 있을까요? – talex
암시 적 매개 변수를 사용하여이 작업을 시도했지만 실패했습니다.하지만 아마도 사용 가능합니까? –
나는이 일을함으로써 다른 문제를 해결하려고 노력한다고 믿습니다. 그것이 사실이라면, 우리에게 설명하십시오. 어쩌면 그것은 더 나은 해결책 일 것입니다. – talex