Первый аргумент функции bind — <имя-переменной> — является именем глобальной или локальной переменной, созданной в правиле или функции. Переменная, определенная первым аргументом, будет связана со значением переданного функции выражения. Если заданная переменная еще не определена, она будет создана и связана с соответствующим значением. Помимо пользовательских функций и правил, функцию bind можно использовать в обработчиках сообщений для установки новых значений слотов объекта.
Если параметр <выражение> не определен, то выполнение функции bind не оказывает на локальные переменные никакого влияния, а глобальные переменные получают при этом значения по умолчанию. В случае если пользователь задал выражение, то его значение вычисляется и присваивается соответствующей переменной. Если задано несколько выражений, из их значений формируется составное поле, которое потом и будет связано с указанной переменной.
Функция bind возвращает значение false при неудачном исходе операции. Во всех остальных случаях функция возвращает присвоенное переменной значение. Ниже приведено несколько примеров использования функции bind (см. также рис. 15.17 и 15.18).
Пример 15.18. Использование функции bind и глобальные переменные
(defglobal ?*x* =3.4)
?*x*
(bind ?*х* (+89)}
?*х*
(bind ?*х* (create$ abсd)
?*х*
(bind ?*x* d e f)
?*х*
(bind ?*x*)
? *x*
Рис. 15.17.Использование функции bind и глобальные переменные
Пример 15.19. Использование функции bind в обработчиках сообщений
(defclass A (is-a USER)
(role concrete)
(slot x)
(slot y))
(defmessage- handler A init after ()
(bind ?self : x 3)
(bind ?self : y 4))
(make-instance a of A)
(send [a] print)
Рис. 15.18.Использование функции bind в обработчиках сообщений
Замечание
Для наглядности при демонстрации работы данных примеров были включены режимы просмотра изменений глобальных переменных и слотов объектов.
Функция if реализует стандартный оператор ветвления "если...то...иначе", применяемый практически во всех языках программирования. Эта функция позволяет задавать некоторое условие, в зависимости от выполнения (или невыполнения) которого будут выбраны те или иные действия.