在Common Lisp中初始化计数器变量

时间:2018-03-24 06:15:42

标签: lisp common-lisp

我想在Common Lisp函数中使用一个变量作为计数器,从所需的数字开始,并在循环中使用。

setq

说明incf$('.dynfield').each(function() { var value = $(this).val(); //append them to var boxc or do the processing you want }); 不适用于此。在clisp中管理计数器变量的标准方法是什么?

2 个答案:

答案 0 :(得分:8)

LOOP中详细解释了

§22. LOOP for Black Belts

(defun x (c)
  (loop 
    for i from 4 
    while <condition> 
    do <something>))

答案 1 :(得分:7)

在Common Lisp中,您需要定义变量。您的变量i未定义。这是一个错误。

(defun x (c)
   (setq i 4)                 ; undefined variable i
   (loop while condition do 
        ;do something
        (incf i)))            ; undefined variable i

定义你的变量:

CL-USER 9 > (defun x (c)
              (let ((i 4))     ; defining/binding local variable i
                (loop while (< i 10) do
                      (print i)
                      (incf i))))
X

CL-USER 10 > (x :foobar)

4 
5 
6 
7 
8 
9 
NIL

但是,正如 coredump 的另一个答案所示,loop提供了自己定义变量并迭代它的方法。