只需一步,快速开始
使用道具 举报
还可以这样
(defun RemoveItem (item lst) (mapcar '(lambda (x) (if (vl-consp x) (RemoveItem item x) x)) (vl-remove item lst) ))
(vl-consp nil)-->nil
(listp nil)-->T
(vl-consp lst) = (and lst (listp lst))
(atom nil)-->T
(atom '(1 2))-->nil
用vl-consp,当参数为nil时省去了下一级的运算
atom 个人习惯,我一般用的比较少
请教caoyin:
_$ (list 1245 "" "add" '(1 "" 2 nil "" 3 5 "" nil 6 "" 8 . 9))(1245 "" "add" (1 "" 2 nil "" 3 5 "" nil 6 "" 8 . 9))如何删除点对表中的 "" nil ?单个点对表,以及潜逃在其他表中的点对表
_$ (removeitem "" (list 1245 "" "add" '(1 "" 2 nil "" 3 5 "" nil 6 "" 8 . 9))); 错误: 列表错误: 9
点对是特殊的表,作你说的运算意义不大,如果一定要写出程序楼主应该写的出
(vl-list-length '(1 . 2))->nil
;;判断表 x 是否是点对表
(and (vl-consp x) (not (vl-list-length x)))
Caoyin:
我已经试过了,问题的根源是出在 vl-remove 上,虽然这个条件 (and (vl-consp x) (not (vl-list-length x)))可以用,但是到了这里 (vl-remove item lst),就被杀掉了,我已经通过其他方法解决了这个难题,不能用 vl-remove这个函数了。caoyin 如果不相信,可以亲自试一下!
提醒:用 vl-prin1-to-string 是不能处理包含REAL的LIST
(setq A pi)
(setq B (RemoveItem nil (list 1 nil A)))
(/= A (cadr B))--->T
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2025-4-30 21:13 , Processed in 0.183539 second(s), 26 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.