Pharo Smalltalk - 如何实现对象中的可变范围?

Pharo Smalltalk - How is variable scope in an Object achieved?

我正在 Pharo 中进行试验,我想知道如何 class 实现实例变量范围。

更重要的是,实例变量可以被class实例的所有方法访问,同样class实例变量可以被[=16]的所有方法访问=] 等等。

此范围的深度在代码中的何处定义?可以看到这是在哪里以及如何发生的,Smalltalk 是完全面向对象的吗?

我假设您使用的是 Pharo >= 4.0,在这种情况下,您拥有所谓的 OpalCompiler

OpalCompiler中具体化了变量作用域(见OCAbstractScope和subclasses),在抽象语法树的语义分析中使用的作用域(见OCASTSemanticAnalyzer).

您现在有了一个入口点,应该从这个起点开始关注消息发送者、class 引用、实例变量引用……。