我正在 Pharo 中进行试验,我想知道如何实现类、实例变量范围。
更重要的是,实例变量可以被类的该实例的所有方法访问,类实例变量也可以被类的所有方法访问等等。
这个范围的深度在代码中是在哪里定义的?可以看到这是在何处以及如何发生的,Smalltalk 是完全面向对象的吗?
我假设你在 Pharo >= 4.0,在这种情况下你有所谓的OpalCompiler.
在 中OpalCompiler,变量范围被具体化(请参阅OCAbstractScope和 子类),该范围在抽象语法树的语义分析期间使用(请参阅OCASTSemanticAnalyzer)。
您现在有了一个入口点,并且应该从这个起点开始遵循消息发送者、类引用、实例变量引用……。