LISP - 循环

  • 简述

    可能有一种情况,当您需要多次执行一段代码时。循环语句允许我们多次执行一条语句或一组语句,以下是大多数编程语言中循环语句的一般形式。
    循环
    LISP 提供以下类型的结构来处理循环要求。单击以下链接以查看其详细信息。
    序号 构造与描述
    1 loop
    loopconstruct 是 LISP 提供的最简单的迭代形式。在其最简单的形式中,它允许您重复执行一些语句,直到找到一个return陈述。
    2 for 循环
    循环 for 构造允许您像其他语言中最常见的那样实现类似迭代的 for 循环。
    3 do
    do 构造也用于使用 LISP 执行迭代。它提供了一种结构化的迭代形式。
    4 dotimes
    dotimes 构造允许循环一些固定次数的迭代。
    5 dolist
    dolist 构造允许遍历列表的每个元素。
  • 优雅地退出一个块

    blockreturn-from允许您在出现任何错误时优雅地退出任何嵌套块。
    block函数允许您创建一个命名块,其主体由零个或多个语句组成。语法是 -
    
    (block block-name(
    ...
    ...
    ))
    
    return-from函数接受一个块名称和一个可选的(默认为 nil)返回值。
    以下示例演示了一点 -
  • 例子

    创建一个名为 main.lisp 的新源代码文件并在其中键入以下代码 -
    
    (defun demo-function (flag)
       (print 'entering-outer-block)
       
       (block outer-block
          (print 'entering-inner-block)
          (print (block inner-block
             (if flag
                (return-from outer-block 3)
                (return-from inner-block 5)
             )
             (print 'This-wil--not-be-printed))
          )
          (print 'left-inner-block)
          (print 'leaving-outer-block)
       t)
    )
    (demo-function t)
    (terpri)
    (demo-function nil)
    
    当您单击执行按钮或键入 Ctrl+E 时,LISP 会立即执行它,返回的结果是 -
    
    ENTERING-OUTER-BLOCK 
    ENTERING-INNER-BLOCK 
    ENTERING-OUTER-BLOCK 
    ENTERING-INNER-BLOCK 
    5 
    LEFT-INNER-BLOCK 
    LEAVING-OUTER-BLOCK