函数参数和局部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)
)
符号不应出现在defun表达式中“/”符号的两侧;函数参数的范围已经是函数的局部范围,因此不需要在“/”的右侧专门声明为局部。
变量“nL”在此函数中是冗余的,因为函数参数“L”已经是函数的局部变量。 功能1是否正确?
这取决于你认为什么是正确的结果。 可能会添加一些错误捕捉和干净的退出:
(defun test1 (l)
(cond ((listp l)
(while (setq l (cdr l))
(print l))))
(prin1))
页:
[1]