明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 886|回复: 24

[讨论] 关于repeat

[复制链接]
发表于 2024-12-20 18:04:40 | 显示全部楼层 |阅读模式

关于repeat运行次数的退出问题,比如下面是运行5次,当运行到2次的时候已经满足要求,这时怎么才能退出repeat循环呢?
(repeat 5
   ()
    ()

   )


"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2024-12-21 10:53:53 | 显示全部楼层
(defun tt1 (p1 lst)
         (setq m t)
                 ;(defun tz () (setq m nil))
                 (setq i 0 )
                 (while m
                         (setq lst1 '())
                         (setq lst1 (nth i lst))
                         (setq lst1 (mapcar 'reverse  lst1))
                         (if (assoc p1 lst1)
                                 (progn
                                         (setq i (1+ i))
                                         (setq m nil);(tz)
                                 )
                         )
                         (setq i (1+ i))
            
         )
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-20 19:01:08 | 显示全部楼层
飞雪神光 发表于 2024-12-20 18:42
发代码看看  repeat不可中断必须执行完次数才可以 想停止就只用while

(defun tt1 (p1 lst)
        (setq m t)
        (while m
                (defun tz () (setq m nil))
                (setq i 0 )
                (repeat (length lst)
                        (setq lst1 '())
                        (setq lst1 (nth i lst))
                        (setq lst1 (mapcar 'reverse  lst1))
                        (if (assoc p1 lst1)
                                (progn
                                        (setq i (1+ i))
                                        (tz)
                                )
                        )
                        (setq i (1+ i))
                )
        )
)
回复 支持 反对

使用道具 举报

发表于 2024-12-20 21:55:10 | 显示全部楼层
三领哪有个判定块内是否含有文字实体的


  • ;;块内是否存在文字类实体-----(一级)----
  • (defun blkiftxt (bname / blk kua name1 tp loop k)
  •   (setq kua (dxf1 bname 2) blk (tblobjname "Block" kua) loop t)
  •   (while (and loop (setq name1 (entnext blk)))
  •     (setq tp (dxf1 name1 0))
  •     (cond
  •       ((member tp '("TEXT" "MTEXT" "TCH_TEXT" "TCH_MTEXT" "DIMENSION"))
  •         (setq k t loop nil)
  •       )
  •       ((= tp "INSERT")
  •         (setq k (blkiftxt name1))
  •       )
  •     )
  •     (setq blk name1)
  •   )
  •   k
  • )



回复 支持 反对

使用道具 举报

发表于 2024-12-20 18:12:58 | 显示全部楼层
Lisp就是空循环就行了.
想要break就用C#或者C++吧
回复 支持 反对

使用道具 举报

发表于 2024-12-20 18:14:28 | 显示全部楼层
用WHILE函数,达到要求,退出循环
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-20 18:20:16 | 显示全部楼层
m809289064j 发表于 2024-12-20 18:14
用WHILE函数,达到要求,退出循环

我为了跳出repeat循环,做的就是repeat 套在while里,当repeat运行满足时设置一个跳转函数,这个跳转函数就是设置一个nil,跳出while,不管用,还是运行那么多次。
回复 支持 反对

使用道具 举报

发表于 2024-12-20 18:30:30 | 显示全部楼层
用repeat循环,一般不会用具体的数字去做循环次数,我一般都是用(sslength ss)的方式确定环次数。当然,具体问题,具体分析。

点评

肯定是变量。(sslength ss)或者(length lst)  发表于 2024-12-20 18:59
回复 支持 反对

使用道具 举报

发表于 2024-12-20 18:37:08 | 显示全部楼层
wide 发表于 2024-12-20 18:20
我为了跳出repeat循环,做的就是repeat 套在while里,当repeat运行满足时设置一个跳转函数,这个跳转函数 ...

最小化demo看看
回复 支持 反对

使用道具 举报

发表于 2024-12-20 18:42:47 | 显示全部楼层
发代码看看  repeat不可中断必须执行完次数才可以 想停止就只用while
回复 支持 反对

使用道具 举报

发表于 2024-12-20 20:15:33 | 显示全部楼层
wide 发表于 2024-12-20 19:01
(defun tt1 (p1 lst)
        (setq m t)
        (while m

  1. (defun tt1 (p1 lst)
  2.         (setq lst1 '())
  3.         (while (null (assoc p1 lst1))
  4.                 (setq lst1 '())
  5.                 (setq lst1 (nth i lst))
  6.                 (setq lst1 (mapcar 'reverse lst1))
  7.         )
  8. )
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-20 20:40:25 来自手机 | 显示全部楼层
本帖最后由 wide 于 2024-12-20 20:46 编辑

楼上的(nth i  lst)中的 i 没起作用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-22 21:09 , Processed in 0.379922 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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