4

我不是指类变量。我想要一个可以在任何地方使用的变量。我应该在哪里定义它?[吱吱声]

4

3 回答 3

6

Squeak 将所有类实例和其他全局变量存储在名为“Smalltalk”的 SystemDictionary 中。你可以像这样定义一个全局变量:

Smalltalk at: #variableName put: theValue.

引用变量variableName将返回theValue.

然而,好的 Smalltalk 风格是完全避免全局变量。

于 2009-05-21T11:58:43.980 回答
4

一种方法是制作一个单身人士,就像在这个答案中一样。

通常,您创建一个类变量和伴随的类方法,以使某些对象成为全局可访问的。以上面提到的单例为例。然后从其他地方访问此类变量:

global := MyClass myGlobalVar

要成为全局可更改的,请创建 mutator 类方法并将其称为:

MyClass myGlobalVar: true

还有其他方法,但是这个带有类变量的方法可以在 Smalltalk 方言中移植,因此从长远来看它是最安全的方法。

于 2009-05-21T11:50:50.267 回答
1

好吧,smalltalk 中的课程是全球可用的,您可以随时更改它。只需创建一个类并将您的更改代码添加为类方法。然后你可以通过调用访问你的东西

MyVariable thisOrThat
MyVariable updateThisOrThat: aThisOrThat
于 2009-05-21T12:03:16.250 回答