Переменные
Переменные
В языке Смолток существует пять типов переменных:
- временные переменные (temporary variable);
- переменные экземпляра (instance variable);
- переменные класса (class variable);
- глобальные переменные (global variable);
- общие переменные (pool variable).
Все они различаются временем своего существования и областью действия.
Временные переменные
объявляются внутри методов, создаются в момент вызова метода и уничтожаются по возвращении из метода.
Например:
| path speed time |
path := 200.
speed := 5.
time := path/speed.
^time.
Переменные экземпляра хранятся в памяти внутри каждого экземпляра. Ссылки на них допускаются только внутри данного экземпляра, и они существуют до тех пор, пока существует сам экземпляр.
К переменным класса, глобальным и общим переменным имеется доступ более чем из одного объекта. Они зарегистрированы в общем словаре. Переменные классов регистрируются в словаре по имени class, глобальные переменные зарегистрированы в словаре по имени SmallTalk (или Смолток), общие переменные зарегистрированы в словарях, объявляемых специальным образом.
Глобальные переменные. В системе есть каталог, содержащий все глобальные переменные программной среды. Он имеет имя SmallTalk (Смолток) и сам является глобальной переменной. Глобальные переменные доступны любому объекту по чтению и записи. Для определения новой глобальной переменной необходимо вычислить следующее выражение:
SmallTalk at: #<name> put: nil
(Смолток вПозиции: #<имя> разместить: nil)
Имя глобальной переменной начинается с прописной буквы. Символ "#" используется в языке для определения системного имени.
Значение глобальной переменной можно изменить, присвоив ей новое значение. Например, введем новую глобальную переменную NewVar:
SmallTalk at: #NewVar put: nil.
NewVar := 3.1415.
Эти две строки можно заменить одной:
SmallTalk at: #NewVar put: 3.1415
Еще один способ ввода новых глобальных переменных – это использование возможностей интегрированной среды Смолток. Дело в том, что, когда интерпретатор встречает неизвестное имя, то он выдает запрос пользователю об объявлении новой глобальной переменной.
Переменные класса. Они доступны любому экземпляру этого класса по чтению и записи. Описываются эти переменные при объявлении свойств класса.
Общие переменные. Для чтения и записи в общие переменные в описании класса должны быть объявлены имена словарей, содержащих эти переменные.
Например:
class name HUMAN
superclass ANIMAL
instance variable names SEX
class variable names POPULATION
shared pools BiologicalFacts -- общие переменные
При таком объявлении словарь переменных BiologicalFacts будет общим для класса Human, и все переменные из словаря BiologicalFacts будут доступны по чтению и записи всем экземплярам класса Human.