私はelispに値を順番に出力するループを作成しようとしています。elispでローカル変数をインクリメントする方法
私は以下のコードを試してみました。コード内のエラーを指摘してください。
(let ((inc_variable 0))
(message "%S" inc_variable)
(while t (let ((inc_variable (+ inc_variable 1)))
(message "%S" inc_variable))))
私はelispに値を順番に出力するループを作成しようとしています。elispでローカル変数をインクリメントする方法
私は以下のコードを試してみました。コード内のエラーを指摘してください。
(let ((inc_variable 0))
(message "%S" inc_variable)
(while t (let ((inc_variable (+ inc_variable 1)))
(message "%S" inc_variable))))
このコードでinc_variable
ためバインディングがあります。外側の束縛は値0を持ち、変化しません。次に、ループのたびに、inc_variable
の新しいバインディングを作成します。このバインドには、1に加えて外部バインディングの値(常に0です)が設定されます。したがって、内部バインディングは毎回値1を取得します。
let
は常に結合新しいを作成することを忘れないでください:setq
を使用し、あなたが既存バインディングの値を更新する場合:
(let ((inc-variable 0))
(while t
(message "%S" inc-variable)
(setq inc-variable (+ inc-variable 1))))
変数をインクリメントするもう一つの方法は、cl
からincf
を使用することです:
(require 'cl)
(let ((x 0))
(incf x)
(message "%d" x)
)
ループは次のようになります。
(require 'cl)
(let ((x 0))
(while (< x 10) (incf x)
(insert (format "%d\n" x))
)
)
最後の行は '(setqのINC-変数(1+ INC可変))))' Iは、原稿をその行で '1 +' – sebs
をインクリメントするための機能でビルドを使用してコピーしたために減少させることができますポスターを明瞭にするため。 (一度に1つの問題を解決してください!)それが私のコードだったら 'incf inc-variable 'と書くでしょう。 –