Уничтожение переменных класса Visualworks Cincom Smalltalk

Как мы можем инициализировать переменную класса в Visualworks Smalltalk и уничтожить ее после использования? Я хочу знать о ClassVariables. НЕ ClassInstanceVariables.

Я реализую шаблон Singleton, и вот мой код

MyClass class>> aClasMethod
         aClassVariable isNil ifTrue:[
               aClassVariable := 'I am a variable'.
         ]
         ^aClassVariable.

Как только переменная создана, я не могу ее уничтожить. т. е. в следующий раз, когда я запускаю свой код, я вижу, что переменная класса сохраняет свое предыдущее значение. Как я могу этого избежать?

Я пробовал это: MyClass allInstances do: [:inst | inst становится: ноль]. Но бесполезно.


person Aditya Kappagantula    schedule 04.12.2013    source источник


Ответы (2)


Лучший способ — просто добавить метод класса, чтобы установить переменную класса в nil, а затем вызывать его всякий раз, когда наступит подходящее время для его очистки. Я делаю это все время с шаблоном Singleton.

person David Buck    schedule 04.12.2013

я думаю, что мы обычно используем одноэлементный шаблон, чтобы у нас был только один объект. Я не знаю, почему вы хотите сохранить строковое значение в переменной класса. Попробуйте сохранить объект, чтобы у вас была только одна копия этого конкретного объекта, и сохраните значения в переменных экземпляра. так что этот конкретный объект имеет только некоторые определенные значения. Затем в будущем, если вам нужно обновить значения, хранящиеся в переменной экземпляра, сделайте еще один метод updateValues ​​​​и сделайте все в нем.

person Harshil Shah    schedule 06.12.2013