我希望能够编写这样的代码:
MyObject subclass: #A instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'.
A subclass: #B instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'.
无需单独运行每一行。当我尝试这样做时,我收到一条错误消息
A
未声明,即使它会在到达第二行时声明。有没有办法克服这个问题?
最佳答案
对于类的延迟查找,您必须在全局字典中查找类,名为 Smalltalk
(尝试检查和浏览它)。您可以使用访问器,如 classNamed:
或 at:
在编译要计算的整个表达式时查找可能尚未定义的名称。
MyObject subclass: #A instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'.
(Smalltalk classNamed: #A) subclass: #B instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'.
关于Smalltalk 指代尚未定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65289085/