Smalltalk 指代尚未定义的类

标签 smalltalk

我希望能够编写这样的代码:

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/

相关文章:

c# - 你能阻止 Windows TileWindows 函数将所有窗口恢复到它们以前的大小吗?

smalltalk - Smalltalk 中的 block 可以单独运行吗?

smalltalk - 在 Seaside 等 Web 应用程序框架中处理 Excel 文件

performance - 有哪些不同的技术可以使超形态调用站点更加高效

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

windows - 有没有不用虚拟机就可以在 Smalltalk 中开发的方法?

smalltalk - 评估 Pharo 中的不平等

smalltalk - 何时使用 Seaside 组件,何时使用简单的渲染对象?

string - Smalltalk 中子串的索引

smalltalk - 为什么我需要像 Pharo 这样的 Smalltalk 方言的共享源文件?