Инструменты пользователя

Инструменты сайта


examination:flp:question25

Статические и свободные переменные РС – Лиспе.

Передача параметров. Глобальные и локальные переменные

В Лиспе передача параметров производится в функцию по значе- нию, т.е. формальный параметр в функции связывается с тем же значением, что и значение фактического параметра. Изменение значения формального параметра не оказывает влияния на значения фактических параметров. После вычисления функции, созданные на это время связи параметров ликвидируются и происходит возврат к тому состоянию, которое было до вызова функции . Параметры функции являются локальными переменными , и имеют значение только внутри функции.

Например: * ( defun f ( x ) ( setq x ' new ) ) ; меняет значение x f

* ( setq x ' old ) old

* x old

* ( f x ) new

Еще пример: * ( defun double ( num ) ( * num 2 ) double

* ( setq num 5 ) 5

* ( double 2 ) 4

* num 5

Свободные переменные

Если в теле функции есть переменные, не входящие в число ее формальных параметров - они называются свободными. Значения свободных переменных остается в силе после ее выполнения.

Например:

* ( defun f1 ( y ) (setq x 3 ) ) f1

* ( f1 5 ) 3

* x 3

examination/flp/question25.txt · Последние изменения: 2014/01/15 08:17 (внешнее изменение)