如何在Squeak中创建全局变量?

时间:2009-05-21 11:38:40

标签: smalltalk squeak global-variables

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

3 个答案:

答案 0 :(得分:6)

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

Smalltalk at: #variableName put: theValue.

参考变量variableName将返回theValue

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

答案 1 :(得分:4)

一种方法是制作单身,in this answer

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

global := MyClass myGlobalVar

要成为全局可更改的,请使用mutator类方法并将其命名为:

MyClass myGlobalVar: true

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

答案 2 :(得分:1)

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

来访问您的资料
MyVariable thisOrThat
MyVariable updateThisOrThat: aThisOrThat