Pharo大错误?

时间:2014-06-07 00:51:33

标签: smalltalk pharo

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

 Smalltalk at:#asd put: myobject new.

然后我错误地将此代码写入工作区。

 Smalltalk at:asd put: myobject new.

这给了我错误,不断, 当从键盘按一个键时,我得到错误,我的对象不明白,就是这个byteArray,就像那样。 我该如何解决这个问题? 或者如何重置全球字典?

1 个答案:

答案 0 :(得分:3)

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

首先,我建议你不要做那样的事情,因为全局变量通常用于在其中存储类。

现在问题的原因是您不必在工作区中声明变量,它将为您使用的每个名称创建一个新的战争。默认情况下,新var为nil,所以你所做的就是在字典中放一个nil

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

Smalltalk globals removeKey: nil ifAbsent: [ ] 

现在,如果你想拥有一个独特的类实例,我建议你使用单例模式。这意味着定义类实例变量(例如default)和类方法:

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

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