明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2564|回复: 8

请教一个跳出while和repeat的函数

[复制链接]
发表于 2012-11-19 15:50:18 | 显示全部楼层 |阅读模式
比如我在用while循环repeat循环式,当达到某种条件,则跳出该循环,请问是什么函数呢
发表于 2012-11-19 16:14:09 | 显示全部楼层
当达到某种条件...
用 (while 条件 ...)
repeat 则不适用
发表于 2012-11-19 16:23:53 | 显示全部楼层
还是直接贴出代码来,更容易解决问题
 楼主| 发表于 2012-11-19 16:38:37 | 显示全部楼层
Andyhon 发表于 2012-11-19 16:14
当达到某种条件...
用 (while 条件 ...)
repeat 则不适用

哦,好的,谢谢哈
发表于 2012-11-19 16:44:46 | 显示全部楼层
本帖最后由 mandala 于 2012-11-19 16:56 编辑

可以比较一下这两段小程序,应该可以解决你的问题。其中aaa可以跳出repeat,继续执行下一语句。

至于while么本来就会跳出的……不然要while干什么。

  1. (defun c:bbb  ()
  2.   (setq list1 '(1 2 3 4 5 6 7 8 9))
  3.   (setq j 0
  4. x 7) ;_ 结束setq
  5.   (repeat (length list1)
  6.     (setq j (1+ j))
  7.     (if (= j x)
  8.       (exit)) ;_ 结束if
  9.     )
  10.   (print j))


  1. (defun c:aaa  ()
  2.   (setq list1 '(1 2 3 4 5 6 7 8 9))
  3.   (setq catchit (vl-catch-all-apply
  4.     '(lambda ()
  5.        (setq j 0
  6.       x 7) ;_ 结束setq
  7.        (repeat (length list1)
  8.          (setq j (1+ j))
  9.          (if (= j x)
  10.     (exit)) ;_ 结束if
  11.          ) ;_ 结束repeat
  12.        ) ;_ 结束lambda
  13.     ) ;_ 结束vl-catch-all-apply
  14. )
  15.   (print j))

发表于 2012-11-19 17:00:07 | 显示全部楼层
用while比较好,你的这种情况可以用:
  1. (while (or (< j (length list1)) (/= j x))
  2.   ...


一般说来,不到不得已时,不要使用exit函数退出,而是让程序每个“表”都有序地执行完毕退出。
 楼主| 发表于 2012-11-20 19:05:07 | 显示全部楼层
好的,谢谢大家,学会exit了,还不知道这个函数
发表于 2012-11-20 19:40:09 | 显示全部楼层
(defun C:Test ()
   (setq i 9)
   (repeat i
     (if (< i 4) (exit))
     (setq i (1- i))
   )
   (princ i)    ; 请关注这句 或之后的代码
)
发表于 2012-11-20 23:23:04 | 显示全部楼层
这个也是一直想知道的,不过最后还是用while比较合适,(exit)会返回; 错误: quit / exit abort,很多时候就不适合了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-26 05:12 , Processed in 0.153761 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表