Kowal 发表于 2022-7-5 18:17:52

函数参数和局部v

那功能好吗?
 
功能1
(defun test1 (L /)
(while
   (setq L (cdr L))
   (print (car L))
   )
)
功能2
(defun test1 (L / L)
(while
   (setq L (cdr L))
   (print (car L))
   )
)
功能3
(defun test2 (L / nL)
(setq nL L)
(while
   (setq nL (cdr nL))
   (print (car nL))
   )
)
(prompt "\npr")
(defun c:pr (/ lst)
(setq lst '("A" "B" "C" "D" "E" "F"))
(print lst)
(test1 lst)
(princ "\n===")
(test2 lst)
(princ)
)

Lee Mac 发表于 2022-7-5 18:46:47

 
符号不应出现在defun表达式中“/”符号的两侧;函数参数的范围已经是函数的局部范围,因此不需要在“/”的右侧专门声明为局部。
 
 
变量“nL”在此函数中是冗余的,因为函数参数“L”已经是函数的局部变量。

Kowal 发表于 2022-7-5 18:53:57

功能1是否正确?

Lee Mac 发表于 2022-7-5 19:04:48

 
这取决于你认为什么是正确的结果。

David Bethel 发表于 2022-7-5 19:25:37

可能会添加一些错误捕捉和干净的退出:
 

(defun test1 (l)
(cond ((listp l)
      (while (setq l (cdr l))
               (print l))))
(prin1))
页: [1]
查看完整版本: 函数参数和局部v