【问题标题】:How to do a while loop in LISP如何在 LISP 中执行 while 循环
【发布时间】:2016-03-02 05:42:29
【问题描述】:

我无法在 lisp 中使用简单的 while 循环!

(loop (while (row >= 0))
      setf(row (- row 1))
      (collect (findIndex row col))

当 row 大于或等于 0 时,我想减少 row 并收集 findIndex 方法给出的结果。 假设给出了 col。

谢谢!!!

【问题讨论】:

    标签: loops while-loop lisp common-lisp


    【解决方案1】:

    循环的正确形式如下:

    (loop while (>= row 0) 
      do (setf row (- row 1))           ; or better: do (decf row)
      collect (findIndex row col))
    

    有关循环语法的详细说明,请参阅manual

    【讨论】:

      【解决方案2】:

      如果倒计时,则不需要WHILE+递减。

      您的循环从row - 1 向下到-1。我们可以把它写成FOR 循环。举两个例子:

      (loop for row-number from (1- row) downto -1
            collect (find-index row-number col)))
      

      如果你想从row倒数到0(这里使用downfrom ... to而不是from ... downto):

      (loop for row-number downfrom row to 0
            collect (find-index row-number col)))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        • 2016-07-08
        • 1970-01-01
        相关资源
        最近更新 更多