另一种常见的编写 while
循环的方式是编写测试,使其确定计数器是否大于零。只要计数器大于零,循环就会重复。但当计数器等于或小于零时,循环停止。为使此方法有效,计数器必须从大于零开始,然后通过一个可重复评估的形式逐渐减小。
测试将是诸如 (> counter 0)
的表达式,如果 counter
的值大于零,则返回 t
为 true,如果 counter
的值等于或小于零,则返回 nil
为 false。使数字逐渐减小的表达式可以是一个简单的 setq
,例如 (setq counter (1- counter))
,其中 1-
是 Emacs Lisp 中减去其参数的内置函数。
递减 while
循环的模板如下:
(while (> counter 0) ; 真或假测试 body… (setq counter (1- counter))) ; 递减器