它在代码中更容易解释:
class Bippy {
val x = 42
class Boppy {
val y = "hello world"
}
val bop = new Boppy
}
val bip = new Bippy
val bop: Bippy#Boppy = bip.bop
Run Code Online (Sandbox Code Playgroud)
bop然后提供给另一个方法,该方法需要x从包含的实例中查找值Bippy.这样做有什么神奇的咒语?
该实例bop来自我无法控制的代码,因此添加新方法Boppy不是一个选项.
你不能.至少不是没有作弊.这是欺骗的方法.
def getOuter(bop : Bippy#Boppy) =
bop.asInstanceOf[{def Bippy$Boppy$$$outer() : Bippy}].Bippy$Boppy$$$outer()
Run Code Online (Sandbox Code Playgroud)
显然,这非常依赖于今天scalac如何工作的细节,并且无法保证它将在明天起作用.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |