jaminth 发表于 2012-9-3 00:35:43

怎么跳出foreach 循环

怎么跳出这个foreach
(foreach n listdd


)
这个程序是循环执行全部的列表,请教大家怎样在条件符合时,跳出循环?

Andyhon 发表于 2012-9-3 08:03:51

改用 while 吧

cheng5276 发表于 2012-9-3 20:51:32

只能用WHILE
(SETQ ST T I 0)
(WHILE (AND ST (< ILEN))

)

yjr111 发表于 2012-9-3 20:55:13

(setq oldlistdd listdd)
(foreach n listdd
(if ...
    (setq listdd nil)
)
(setqlistdd oldlistdd)

ZZXXQQ 发表于 2012-9-3 21:07:57

经测试无法退出。
测试程序如下:
(defun c:tt ()
(setq listdd '(1 2 3 4 5 6))
(setq oldlistdd listdd)
(foreach n listdd
(if (= n 4) (progn
   (princ n)
   (setq listdd nil)
)
   (princ n)
)
)
(princ listdd)
(princ)
)
输出结果:
tt 123456nil

namezg 发表于 2012-9-3 21:18:32

试试vl-some 能不能满足你的要求

yjr111 发表于 2012-9-4 00:11:27

ZZXXQQ 发表于 2012-9-3 21:07 static/image/common/back.gif
经测试无法退出。
测试程序如下:
(defun c:tt ()


G版批评的对,Z版测试正确。。。我在4楼发的没经过测试完全臆想的答案是错误的!不过也真奇怪,foreach函数他所取得的表是怎么保存的,竟然不能复位nil?如果能找到他所保存的位置应该可以中断吧

LLXXZZ 发表于 2012-9-4 12:45:10

yjr111 发表于 2012-9-4 00:11 static/image/common/back.gif
G版批评的对,Z版测试正确。。。我在4楼发的没经过测试完全臆想的答案是错误的!不过也真奇怪,foreach函 ...

感觉直接把表内容调内运算,这样,这个表重新赋值就没有效果了。(想当然的看法)
页: [1]
查看完整版本: 怎么跳出foreach 循环