LISP - переменные

В LISP каждая переменная представлена symbol. Имя переменной - это имя символа, которое хранится в ячейке памяти символа.

Глобальные переменные

Глобальные переменные имеют постоянные значения во всей системе LISP и остаются в силе до тех пор, пока не будет указано новое значение.

Глобальные переменные обычно объявляются с использованием defvar построить.

Например

(defvar x 234)
(write x)

Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.

234

Поскольку в LISP нет объявления типа для переменных, вы напрямую указываете значение для символа с помощью setq построить.

Например

->(setq x 10)

В приведенном выше выражении переменной x присваивается значение 10. Вы можете ссылаться на переменную, используя сам символ как выражение.

В symbol-value Функция позволяет извлечь значение, хранящееся в месте хранения символа.

Например

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)

(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)

Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.

x = 10 y = 20 
x = 100 y = 200

Локальные переменные

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

Как и глобальные переменные, локальные переменные также могут быть созданы с помощью setq построить.

Есть две другие конструкции - let и prog для создания локальных переменных.

Конструкция let имеет следующий синтаксис.

(let ((var1  val1) (var2  val2).. (varn  valn))<s-expressions>)

Где var1, var2, ..varn - имена переменных, а val1, val2, .. valn - начальные значения, присвоенные соответствующим переменным.

когда letвыполняется, каждой переменной присваивается соответствующее значение и, наконец, вычисляется s-выражение . Возвращается значение последнего вычисленного выражения.

Если вы не укажете начальное значение для переменной, оно будет присвоено nil.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))

Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.

x = A y = B z = C

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

В prog функция последовательно выполняет список s-выражений и возвращает nil, если не встречает вызов функции с именем return. Тогда аргумент return функция оценивается и возвращается.

пример

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))

Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.

x = (A B C) y = (1 2 3) z = (P Q 10)