LISP-変数
LISPでは、各変数は symbol。変数の名前はシンボルの名前であり、シンボルのストレージセルに格納されます。
グローバル変数
グローバル変数はLISPシステム全体で永続的な値を持ち、新しい値が指定されるまで有効です。
グローバル変数は通常、を使用して宣言されます defvar 構築します。
例えば
(defvar x 234)
(write x)
[実行]ボタンをクリックするか、Ctrl + Eを入力すると、LISPはすぐにそれを実行し、返される結果は次のようになります。
234
LISPには変数の型宣言がないため、シンボルの値を直接指定します。 setq 構築します。
例えば
->(setq x 10)
上記の式は、値10を変数xに割り当てます。シンボル自体を式として使用して変数を参照できます。
ザ・ 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 構築します。
他に2つの構成があります- 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 functionは、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)