yjpzc 发表于 2013-1-25 21:49:52

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

本帖最后由 yjpzc 于 2013-1-31 22:00 编辑

实例: 解读无痕老师的表分段函数(defun xl-div (lst x / lst2)   (foreach n lst   (if (andlst2 (/= 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)))返回‘(‘( 00))函数执行第三次N 的值为1表lst2 的值为‘(‘( 00)) (car lst2) 返回‘( 00) (length ‘(00 ) ) 返回 2判断表长度 (and ‘(0 0)nil)返回值为 nil所以程序执行(setq lst2(cons (list n) lst2))返回 ‘(‘( 1) ‘(00 ))函数执行第四次N 的值为1表lst2 的值为‘(‘( 1) ‘(00 ))(car lst2) 返回‘(1)(length ‘(1)) 返回 1判断表长度 (and ‘(‘( 1) ‘(00 ))T)返回值为 T 所以程序执行 (setq lst2(cons (append (car lst2)(list n))(cdr lst2)))返回 ‘(‘(1 1) ‘(0 0))

004 发表于 2013-1-26 04:56:05

好点子,支持对基础的刨析。

xiabin68 发表于 2013-1-26 22:09:33

这思路是怎么想了哦!

cuyongping 发表于 2013-1-28 13:54:51

喜欢谢谢了!

feng83 发表于 2014-5-10 07:20:04

不错,学习下,楼主辛苦,支持原创
页: [1]
查看完整版本: 关于遍历表 Foreach 函数的简单理解