Smalltalk 法罗大错误?

Smalltalk 法罗大错误?,smalltalk,pharo,Smalltalk,Pharo,我在pharo的smalltalk有课。 我在全局字典中创建了一个实例,它是smalltak Smalltalk at:#asd put: myobject new. 然后我错误地将此代码写入工作区 Smalltalk at:asd put: myobject new. 这给了我错误,不断地, 当一个人从键盘上按一个键时,我得到一个错误,我的对象不明白,这是byteArray,像那个样。 我如何解决这个问题? 或者如何重置全局字典?好的,这是一个有趣的问题 首先,我建议您不要这样做,因为

我在pharo的smalltalk有课。 我在全局字典中创建了一个实例,它是smalltak

 Smalltalk at:#asd put: myobject new.
然后我错误地将此代码写入工作区

 Smalltalk at:asd put: myobject new.
这给了我错误,不断地, 当一个人从键盘上按一个键时,我得到一个错误,我的对象不明白,这是byteArray,像那个样。 我如何解决这个问题?
或者如何重置全局字典?

好的,这是一个有趣的问题

首先,我建议您不要这样做,因为globals通常用于在其中存储类

现在问题的原因是您不必在工作区中声明vars,它将为您使用的每个名称创建一个新的war。默认情况下,新的var是
nil
,因此您所做的是将
nil
键放入字典中

要删除它,请执行以下操作:

Smalltalk globals removeKey: nil ifAbsent: [ ] 
现在,如果您想要类的唯一实例,我建议您使用单例模式。这意味着定义类实例变量(例如,
default
)和类方法:

default
  ^ default ifNil: [default := self new ].

这将在您第一次运行它时创建新实例,然后保留它并在以后需要时返回它。

我不确定每次按键都会导致异常时,OP是否能够修复当前图像中的问题@莱格尔斯坦:你们可能需要一个新的图像。@MaxLeske据我所知,只有当pharo试图建议自动完成和枚举系统指令时,才会出现异常