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)