关于遍历表 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)) 好点子,支持对基础的刨析。 这思路是怎么想了哦! 喜欢谢谢了! 不错,学习下,楼主辛苦,支持原创
页:
[1]