关于变量的作用范围
子函数作为主函数的一个变量出现在主函数内部时,子函数的变量是否只作用于子函数内部?如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:(defun c:tt (/ a)
(defun tt (/ a)
(setq a "\n我是函数 tt 的局部变量") ;_ tt函数局部变量赋值
(princ a)
)
(setq a "\n我是函数 c:tt 的局部变量") ;_ c:tt函数局部变量赋值
(tt)
(princ a)
(princ)
)
命令: tt
我是函数 tt 的局部变量
我是函数 c:tt 的局部变量
命令: Gu_xl 发表于 2013-6-6 09:35 static/image/common/back.gif
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:命令: tt
我 ...
多谢Gu_xl。 Gu_xl 发表于 2013-6-6 09:35 static/image/common/back.gif
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:命令: tt
我 ...
又搜索到G版的答疑,谢谢 本帖最后由 Throne 于 2014-2-9 19:32 编辑
Gu_xl 发表于 2013-6-6 09:35 static/image/common/back.gif
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:命令: tt
我 ...(defun c:tt ()
(defun tt (b)
(setq b "\n我是函数 tt 中的 b")
)
(setq bb "\n我是函数 c:tt 中的bb")
(tt bb)
(princ b) ; nil
(princ)
)
自己又测试了一下,有点疑问
请教一下 (princ b)中的b为什么是未定义啊?是不是子函数的形参从作用域范围上来讲跟子函数的局部变量一样?不知道G版能否看到***** 变量b是函数tt的假变量,在函数tt结束后不存在。
应该直接(princ (tt bb))
因为tt函数的返回值就是变量b的内容。
页:
[1]