48 Глава 2. Синтаксис языка Смолток
2.5. Псевдопеременные
В системе Смолток есть еще и псевдопеременные. Их имена начина-
ются со строчной буквы, но они, тем не менее, доступны всем объектам
системы. Псевдопеременные — это имена-указатели специальных объектов
системы, и, в отличие от переменных, их значения не могут изменяться.
Псевдопеременными являются nil, true, false, self, super.
Псевдопеременная nil указывает на специальный объект — единственный
экземпляр класса UndefinedObject, используемый, если необходимо указать
на отсутствие какого-либо другого подходящего объекта. Например, при со-
здании нового экземпляра класса, если не позаботиться о значениях пере-
менных экземпляра, все они получат значение nil. Кроме того, с помощью
объекта nil часто представляют бессмысленный результат.
Псевдопеременные true и false представляют логическую истину и логи-
ческую ложь и являются единственными экземплярами классов True (Исти-
на) и False (Ложь) соответственно. Сами классы True и False — подклассы
класса Boolean, в котором описан общий протокол поведения этих двух
логических объектов. Определения всех трех классов не вводят никаких
переменных и не определяют доступа к пулам. В классах True и False реа-
лизованы следующие сообщения, выполняющие логические операции:
Класс Boolean Протокол экземпляра
& aBoolean Возвращает true, если и объект, получивший сообщение, и аргумент
aBoolean истинны (операция вычисляющего “И”, в которой аргумент aBoo-
lean всегда вычисляется, независимо от получателя сообщения).
| aBoolean Возвращает true, если или получатель сообщения, или аргумент aBoo-
lean истинны (операция вычисляющего “ИЛИ”).
not Отрицание: если получатель сообщения false, возвращает true, если получатель
сообщения true, возвращает false.
eqv: aBoolean Возвращает true, если получатель сообщения эквивалентен (тожде-
ствен) аргументу aBoolean, иначе возвращает false.
xor: aBoolean Исключающее “ИЛИ”: возвращает true, если получатель сообщения
не эквивалентен aBoolean, иначе возвращает false.
and: alternativeBlock Если получатель сообщения true, возвращает результат вы-
полнения блока alternativeBlock, который не должен иметь аргументов; если
получатель сообщения false, возвращает false без выполнения блока.
or: alternativeBlock Если получатель сообщения false, возвращает результат выпол-
нения блока alternativeBlock, который не должен иметь аргументов; е сли по-
лучатель сообщения true, возвращает true без выполнения блока.