
- LISP 教程
- LISP - 首頁
- LISP - 概述
- LISP - 環境
- LISP - 程式結構
- LISP - 基本語法
- LISP - 資料型別
- LISP - 宏
- LISP - 變數
- LISP - 常量
- LISP - 運算子
- LISP - 決策
- LISP - 迴圈
- LISP - 函式
- LISP - 謂詞
- LISP - 數字
- LISP - 字元
- LISP - 陣列
- LISP - 字串
- LISP - 序列
- LISP - 列表
- LISP - 符號
- LISP - 向量
- LISP - 集合
- LISP - 樹
- LISP - 雜湊表
- LISP - 輸入 & 輸出
- LISP - 檔案 I/O
- LISP - 結構體
- LISP - 包
- LISP - 錯誤處理
- LISP - CLOS
- LISP 有用資源
- Lisp - 快速指南
- Lisp - 有用資源
- Lisp - 討論
Lisp - 變數
在 LISP 中,每個變數都由一個符號表示。變數的名稱是符號的名稱,它儲存在符號的儲存單元中。
全域性變數
全域性變數在整個 LISP 系統中具有永久值,並在指定新值之前一直有效。
全域性變數通常使用defvar結構宣告。
main.lisp
; define a global variable x with a value of 234 (defvar x 234) ; print value of x (write x)
輸出
當您點選“執行”按鈕或鍵入 Ctrl+E 時,LISP 會立即執行它,並返回結果
234
由於 LISP 中沒有變數的型別宣告,因此您可以使用setq結構直接為符號指定一個值。
例如
; set value of x as 10 ->(setq x 10)
上述表示式將值 10 賦給變數 x。您可以使用符號本身作為表示式來引用變數。
symbol-value函式允許您提取儲存在符號儲存位置的值。
示例 - 全域性變數
建立一個名為 main.lisp 的新原始碼檔案,並在其中鍵入以下程式碼。
main.lisp
; set x as 10 (setq x 10) ; set y as 20 (setq y 20) ; print x and y (format t "x = ~2d y = ~2d ~%" x y) ; update value of x as 100 (setq x 100) ; update value of y as 200 (setq y 200) ; print updated values of x and y (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。
示例 - 使用 let
建立一個名為 main.lisp 的新原始碼檔案,並在其中鍵入以下程式碼。
main.lisp
; declare loca variables x, y and z and initialize them with a, b and c (let ((x 'a) (y 'b)(z 'c)) ; print values of x, y and z (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函式的引數被求值並返回。
示例 - 使用 prog
建立一個名為 main.lisp 的新原始碼檔案,並在其中鍵入以下程式碼。
main.lisp
; declare variables and assign thm list of values (prog ((x '(a b c))(y '(1 2 3))(z '(p q 10))) ; print variables (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)