明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1247|回复: 5

[提问] 关于变量的作用范围

[复制链接]
发表于 2013-6-6 09:20:29 | 显示全部楼层 |阅读模式
子函数作为主函数的一个变量出现在主函数内部时,子函数的变量是否只作用于子函数内部?
发表于 2013-6-6 09:35:26 | 显示全部楼层
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:
  1. (defun c:tt (/ a)
  2.   (defun tt (/ a)
  3.     (setq a "\n我是函数 tt 的局部变量") ;_ tt函数局部变量赋值
  4.     (princ a)
  5.     )
  6.   (setq a "\n我是函数 c:tt 的局部变量") ;_ c:tt函数局部变量赋值
  7.   (tt)
  8.   (princ a)
  9.   (princ)
  10.   )
命令: tt
我是函数 tt 的局部变量
我是函数 c:tt 的局部变量
命令:
 楼主| 发表于 2013-6-6 10:10:41 | 显示全部楼层
Gu_xl 发表于 2013-6-6 09:35
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:命令: tt
我 ...

多谢Gu_xl。
发表于 2014-2-9 17:15:11 | 显示全部楼层
Gu_xl 发表于 2013-6-6 09:35
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:命令: tt
我 ...

又搜索到G版的答疑,谢谢
发表于 2014-2-9 19:30:01 | 显示全部楼层
本帖最后由 Throne 于 2014-2-9 19:32 编辑
Gu_xl 发表于 2013-6-6 09:35
如果变量名申明在 / 后面,该变量的作用范围只在该子函数范围,否则就是全局变量!
请看示例:命令: tt
我 ...
  1. (defun c:tt ()
  2.   (defun tt (b)
  3.     (setq b "\n我是函数 tt 中的 b")

  4.   )
  5.   (setq bb "\n我是函数 c:tt 中的  bb")
  6.   (tt bb)
  7.   (princ b)         ;        nil
  8.   (princ)
  9. )


自己又测试了一下,有点疑问
请教一下 (princ b)中的b为什么是未定义啊?是不是子函数的形参从作用域范围上来讲跟子函数的局部变量一样?不知道G版能否看到*****
发表于 2014-2-10 08:37:24 | 显示全部楼层
变量b是函数tt的假变量,在函数tt结束后不存在。
应该直接(princ (tt bb))
因为tt函数的返回值就是变量b的内容。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-25 14:16 , Processed in 0.162443 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表