Smalltalk指的是尚未定义的类
我希望能够编写如下代码:Smalltalk指的是尚未定义的类,smalltalk,Smalltalk,我希望能够编写如下代码: MyObject subclass: #A instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'. A subclass: #B instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'. 没有单独运行每条线路 当我尝试这样做时,我会得
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'.
一些方言支持
Symbol
上的asClass
消息,允许您执行以下操作:
MyObject subclass: #A instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1'.
#A asClasss subclass: #B instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'CAT1