4

私はクラス変数を意味しません。どこでも使える変数が欲しい。どこで定義すればよいですか?【きしむ】

4

3 に答える 3

6

Squeak は、すべてのクラス インスタンスとその他のグローバル変数を「Smalltalk」と呼ばれる SystemDictionary に格納します。次のようにグローバル変数を定義できます。

Smalltalk at: #variableName put: theValue.

変数を参照すると、variableNameが返されtheValueます。

ただし、Smalltalk の優れたスタイルは、グローバル変数を完全に避けることです。

于 2009-05-21T11:58:43.980 に答える
4

1 つの方法は、この回答のようにシングルトンを作成することです。

一般に、クラス変数と付随するクラス メソッドを作成して、一部のオブジェクトをグローバルにアクセスできるようにします。例として、上記のシングルトンを参照してください。そのような変数は、他の場所からアクセスされます。

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 に答える