Lee Mac 发表于 2022-7-6 15:24:46

Sub-R中的变量本地化

大家好,
 
很抱歉,今天我创建了太多的线程,但我突然有大量的问题,如果得到回答,将填补我的LISP知识中的各种漏洞。
 
我的问题是:
 
如果我有一个子例程,比如说创建一个列表,我将列表设置为一个变量,比如“a”,我是否在子程序中定位这个变量,如果我这样做,它在主例程中是否仍然可用?
 

 

(defun c:test ()
   (testa)
   (alert a)
   (princ)
) ;_end defun

(defun testa (/ a)
   (setq a (getstring t))
) ;_end defun

 
我应该本地化突出显示的变量吗?如果我这样做了,我还能在主例程中使用它吗?
 
此外,我是否也应该在主例程中对其进行本地化?

ASMI 发表于 2022-7-6 15:53:13

(defun c:test2 (/ b)
(setq b(testa))
   (alert b)
   (princ)
) ;_end defun
 

 
(defun c:test3 ()
   (alert(testa))
   (princ)
) ;_end defun

Lee Mac 发表于 2022-7-6 15:56:50

谢谢你的帮助,阿斯米,这是一个有点工作周围,并工作得很好。
 
经过一点实验,我发现如果你有一个子例程,其中包含一些变量,然后在主例程中使用,那么这些变量应该在主例程中定位,而不是在子例程中,以便它们保持其值。
 
否则,它们的值在子程序完成后设置为零。

ASMI 发表于 2022-7-6 16:19:17

 
对将子函数放在主函数中,使其成为局部函数(以便LISP正确地说出函数)。
 
(defun c:mainfun(/ a)

(defun subfun()
   (setq a ...)
); end subfun
...
(princ)
); end c:maifun

Lee Mac 发表于 2022-7-6 16:25:11

 
 
哈哈,我真的得学Lisp程序的行话了
 
 
谢谢阿斯米,一如既往地感谢你的帮助
页: [1]
查看完整版本: Sub-R中的变量本地化