Sub-R中的变量本地化
大家好,很抱歉,今天我创建了太多的线程,但我突然有大量的问题,如果得到回答,将填补我的LISP知识中的各种漏洞。
我的问题是:
如果我有一个子例程,比如说创建一个列表,我将列表设置为一个变量,比如“a”,我是否在子程序中定位这个变量,如果我这样做,它在主例程中是否仍然可用?
即
(defun c:test ()
(testa)
(alert a)
(princ)
) ;_end defun
(defun testa (/ a)
(setq a (getstring t))
) ;_end defun
我应该本地化突出显示的变量吗?如果我这样做了,我还能在主例程中使用它吗?
此外,我是否也应该在主例程中对其进行本地化? (defun c:test2 (/ b)
(setq b(testa))
(alert b)
(princ)
) ;_end defun
或
(defun c:test3 ()
(alert(testa))
(princ)
) ;_end defun 谢谢你的帮助,阿斯米,这是一个有点工作周围,并工作得很好。
经过一点实验,我发现如果你有一个子例程,其中包含一些变量,然后在主例程中使用,那么这些变量应该在主例程中定位,而不是在子例程中,以便它们保持其值。
否则,它们的值在子程序完成后设置为零。
对将子函数放在主函数中,使其成为局部函数(以便LISP正确地说出函数)。
(defun c:mainfun(/ a)
(defun subfun()
(setq a ...)
); end subfun
...
(princ)
); end c:maifun
哈哈,我真的得学Lisp程序的行话了
谢谢阿斯米,一如既往地感谢你的帮助
页:
[1]