明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2933|回复: 4

关于遍历表 Foreach 函数的简单理解

[复制链接]
发表于 2013-1-25 21:49:52 | 显示全部楼层 |阅读模式
本帖最后由 yjpzc 于 2013-1-31 22:00 编辑

实例: 解读无痕老师的表分段函数
(defun xl-div (lst x / lst2)   (foreach n lst     (if (and  lst2 (/= x (length (car lst2))))            (setq lst2 (cons (append (car lst2)(list n))(cdr lst2)))         (setq lst2 (cons (list n) lst2))     )   )(reverse lst2))
(setq lst ‘(0 0 11))
(xl-div lst 2)
函数执行第一次
N 的值为0  lst2 的值为空
(car lst2) 返回nil  (lengthnil) 返回 0
判断 (and ‘()  T)  返回值为 nil所以程序执行
(setqlst2 (cons (list n) lst2)) 返回 ‘((0 ))
函数执行第二次
N 的值为0  lst2 的值为‘(( 0 ))
(car lst2) 返回‘( 0 )  (length‘( 0 )) 返回 1
判断表长度 (and ‘(( 0 ))  T)  返回值为 T所以程序执行
(setq lst2 (cons (append (car lst2)(list n))(cdr lst2)))
  返回‘(‘( 0  0))
函数执行第三次
N 的值为1  lst2 的值为‘(‘( 0  0))
(car lst2) 返回‘( 0  0) (length ‘(0  0 ) ) 返回 2
判断表长度 (and ‘(0 0)  nil)  返回值为 nil所以程序执行
(setq lst2(cons (list n) lst2))  
返回 ‘(‘( 1) ‘(0  0 ))
函数执行第四次
N 的值为1  lst2 的值为‘(‘( 1) ‘(0  0 ))
(car lst2) 返回‘(1)  (length ‘(1)) 返回 1
判断表长度 (and ‘(‘( 1) ‘(0  0 ))  T)  返回值为 T
所以程序执行 (setq lst2(cons (append (car lst2)(list n))(cdr lst2)))
返回 ‘(‘(1 1) ‘(0 0))

评分

参与人数 1金钱 +15 收起 理由
【KAIXIN】 + 15 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-1-26 04:56:05 来自手机 | 显示全部楼层
好点子,支持对基础的刨析。
发表于 2013-1-26 22:09:33 来自手机 | 显示全部楼层
这思路是怎么想了哦!
发表于 2013-1-28 13:54:51 | 显示全部楼层
喜欢谢谢了!
发表于 2014-5-10 07:20:04 | 显示全部楼层
不错,学习下,楼主辛苦,支持原创
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 11:21 , Processed in 0.177717 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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