LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1012|回复: 6

常看见“名字空间” ,这个术语是什么意思?

[复制链接]
发表于 2003-10-25 23:31:37 | 显示全部楼层 |阅读模式
thanks in advance.!
发表于 2003-10-27 20:27:17 | 显示全部楼层
我的理解,在perl中的,
名字空间主要是指在某一个包中或者子程序中定义的局域变量了只有在这里面才有起作用,其不会传递到其调用程序中,那么这个子程序中就是指这些变量的名字空间,

书上讲的
sub subname{

}
subname代表自己定义函数的名称,它的命名规则和标量变量,散列,数组,函数名称有自己的命名空间,所以$name ,%name,@name和函数name彼此之间没有什么关系,从而也不会造成混淆
这里的命名空间就是名字空间了,指在子程序内部定义的变量
 楼主| 发表于 2003-10-27 21:32:39 | 显示全部楼层
谢谢,那 我看见perl的子程序里有my ,有什么用,是定义变量只能在子程序里用吗?
发表于 2003-10-27 21:43:58 | 显示全部楼层
是的,子程序中局部变量定义有两种方式my和local
它们的区别在于 my定义的变量只能在该子程序中存在;而local定义的变量不存在于主程序,但存在于该子程序和该子程序调用的子程序中。

定义时可以给其赋值,如
my ($a) = 1;
local ($b) = 2;

但在子程序中大部分都使用my定义变量,以该变量混淆,除非你想让你的子程序中的变量能上一级子程序中可以使用才利用local定义
发表于 2003-10-27 23:01:49 | 显示全部楼层
local 是比较老的调用子例程中才可以见到的,
local实际上会保存给定的全局变量,并在以后恢复它."保存-恢复"
my变量(词法变量)要比local(全局变量)要快,他们的机制很容易混肴,千万不可以把local任意改成my.
 楼主| 发表于 2003-10-27 23:26:54 | 显示全部楼层
谢谢angelp_9312 AND javalee的热心帮助,

用的时候就用my吧,容易看,不会混乱。
发表于 2003-10-27 23:34:58 | 显示全部楼层
写脚本的时候还是建议看看他的手册,最好用新的一些东西,如用my来代替陈旧的local,用chomp替换chop等...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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