smalltalk - 法罗大错误?

标签 smalltalk pharo

我在 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/

相关文章:

pharo - 必须声明临时变量而不是绑定(bind)的原因是什么?

jquery - 海边 pharo Smalltalk 中的 JQPlot 错误

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

smalltalk - pharo - 在服务器启动时运行代码

variables - 在 Squeak 中创建新的伪变量

smalltalk - 如何为 Pharo 图像添加依赖项?

inversion-of-control - Smalltalk和IoC

matrix - 如何在 Pharo Smalltalk 中与 Athens/Cairo 进行透视变换

unicode - 将 unicode/utf-8 数据写入内存文件

testing - (错误)理解 Smalltalk 和 TDD