312735894 发表于 2013-11-6 22:05:39

菜鸟问题,求大神解答!

(defun c:tt()
      (setq a (entget (car (entsel))))
   
      (setq zj (hehe a b))
      (setq js (hehe b a))
      (setq b a)
      (print "增加的是:")(print zj)
      (print "减少的是:")(print js)
      
      (princ)
)   


(defun hehe (a b /)
      (setq i 0 cc nil)
   (if (and b (eq (cdr (assoc -1 a)) (cdr (assoc -1 b))))
      (progn
         (repeat (length a)
            (setq dd (nth i a))
            (if (not (assoc (car dd) b))
               (setq cc (append cc (list (nth i a))))
            )
            (setq i (1+ i))
         )
      )
   )
   cc

)
请问各位大大为什么“(setq i 0 cc nil)”这句代码写在下面那个函数才能正常运行,而写上面那函数却会出错啊?

ll_j 发表于 2013-11-6 22:24:45

这句是下面那个函数中i和cc的初始化代码,如果写在上面那个函数中,上面那个函数用到两次hehe函数,第一次可以初始化,第二次没有初始化,就只能继续累加,因此出错。

312735894 发表于 2013-11-6 23:49:43

ll_j 发表于 2013-11-6 22:24 static/image/common/back.gif
这句是下面那个函数中i和cc的初始化代码,如果写在上面那个函数中,上面那个函数用到两次hehe函数,第一次可 ...

哦哦 谢谢您的回答,我大概明白意思了
就是说第二次调用函数的时候i和CC里面没有值对吧,所以返回nil,就是说(setq i 0 cc nil)只给第一次调用的函数里面的i和CC赋值了,而没有给第二次的函数里面的i和cc赋值,不知道我说得对不对。。。。。
页: [1]
查看完整版本: 菜鸟问题,求大神解答!