本帖最后由 不死猫 于 2014-9-10 13:08 编辑
在第二个函数中修改当前函数局部变量:- (defun changeSYM (x)
- (set x 123)
- )
- (defun c:qq(/ a)
- (setq a 1)
- (print (list "初始化a值" a))
- (changeSYM 'a)
- (print (list "通过地址赋值后" a))
- (princ)
- )
- (c:qq)
执行结果:
("初始化a值" 1)
("通过地址赋值后" 123)
=====================
通过函数交换局部变量的值:(我通过两个不同的方法来测试变量的改变)- ;地址传递可以改变变量的值
- (defun x<->y (x y / z)
- (setq z (eval x))
- (set x (eval y))
- (set y z)
- )
- ;值传递无法改变变量的值(这段不用说必然失败的)
- (defun x-y(x y / z)
- (setq z x)
- (setq x y)
- (setq y z)
- )
- (defun c:tt(/ b c)
- (setq b 1 c 2)
- (print (list "初始值" b c))
- (x-y b c)
- (print (list "第一次交换" b c))
- (x<->y 'b 'c)
- (print (list "第二次交换" b c))
- (princ)
- )
- (setq b nil c nil x nil y nil z nil)
- (c:tt)
- (list "局部变量自动释放" b c x y z)
执行结果:
("初始值" 1 2)
("第一次交换" 1 2)
("第二次交换" 2 1) |