我在 pharo 的 Smalltalk 上了一个类。 我在全局字典中创建了一个实例,它是smalltak,
Smalltalk at:#asd put: myobject new.
然后我错误地将这段代码写入工作区。
Smalltalk at:asd put: myobject new.
这不断地给我带来错误, 当从键盘按下一个键时,我收到错误,我的对象不理解,是这个 byteArray 吗? 我该如何解决这个问题? 或者如何重置全局字典?
最佳答案
好吧,这是一个有趣的问题。
首先我建议你不要这样做,因为全局变量通常用于在其中存储类。
现在问题的原因是你不必在工作区中声明变量,它会为你使用的每个名称创建一个新的 war 。默认情况下 new var 是 nil
,所以你所做的就是在字典中放入一个 nil
键
要删除它,请执行以下操作:
Smalltalk globals removeKey: nil ifAbsent: [ ]
现在,如果您想拥有类的唯一实例,我建议您使用单例模式。这意味着定义类实例变量(例如 default
)和类方法:
default
^ default ifNil: [default := self new ].
这将在您第一次运行它时创建新实例,然后保留它并在以后需要时返回它。
关于smalltalk - 法罗大错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092587/