命名空间的基本概念

命名空间的基本概念

接下来我们来讲一些命名空间的概念,英文是namespace。命名空间一般在小型的编程工作当中不是被经常应用或者没有太多机会去接触的。那一般来说,当程序不断地复杂,我们写的类也就越来越多,结构也会越来越复杂,甚至需要将手头的工作分工为很多人去完成。那这时候有可能会发生一种情况,就是变量名发生了冲突。这种情况呢,就像我们去上学的时候会遇到的一种情况,就是一个年级甚至一个班录取了很多学生之后,你会发现,可能有两个学生的名字是一样的。比如说,同一个班出现了两个同名的学生,老师一般可能起名为大李伟,小李伟。那这种情况下相当于是在一定范围内我可以保证它不重名,一个大李伟一个小李伟。那如果出现在不同的班级,我没有这种控制权限,怎么办呢?一般来说就给他加上牵制的代号,比如说一班的李伟,二班的李伟,这样来区别。这个一班和二班本身就可以理解为两个命名空间,它表示的是李伟这个名字的适用场合。比如说我提到李伟,你可能不知道是哪个,那如果我说现在场合是一班,我说一班的李伟,那我们就可以很轻松的知道我指的是谁了。比如说,老师在一班上课的时候,叫道:“李伟”,那一般情况下他肯定叫的是一班的李伟,不过有的时候呢,老师也需要提到另一个李伟,比如老师说:“二班的李伟不及格,咋们一班的李伟成绩还可以”,这时候呢我们还是需要用到命名空间。命名空间的使用本身是为了防止变量名冲突,使我们可以明确的访问到对象。不同的命名空间呢,同名的变量代表的是不同的变量,也就是同名的一个李伟代表不同的人。

一般呢,我们在定义命名空间的时候,我们常用的一种写法如下图。大家看,namespace是关键字,后边namespace1是名称,它代表的意义是“一班”。

接下来我们看一个例子。我们使用ActionScript文件建立一个命名空间也就是刚刚的namespace1,把它保存一下;然后呢,我们再建立一个命名空间namespace2,注意它代表的是“二班”了,也保存一下。

我们再建立一个Test文件,Test文件结构是这样的:首先它是一个Test类,然后我们给namespace1和namespace2定义一个同名的属性变量score,注意,我们先写命名空间的名称,然后变量名称。然后我们给namespace1的score的值是100,给namespace2的score值是60。然后下面涉及到2个同名的respond函数方法,一班输出的是“我是一班的李伟,我得了100分”它的代码结构是trace(“我是” + namespace1 + “的李伟,我得了,” + namespace1::score + “分” );这段代码要注意的是namespace1::score,前边是命名空间的名称,后边跟着2个冒号,然后才是变量名称。namespace2的结构也是一样的。我们保存一下。

然后我们来看具体的执行情况。我们首先要把Test这个类实例化,比如说实例名称叫classmate。with这个关键字本身是省略了点语法前面的所有的引用,它相当于是classmate.namespace然后如何如何,这是我们经常为了简化代码结构的一个方法。后面呢是执行namespace1里面的respond函数,然后执行namespace2里边的respond函数。我们来看一下这2个函数执行的结果。

大家可以看到在输出面板里执行了2个不同的respond函数。虽然这2个函数的名称是相同的,但它在不同的命名空间当中的,所以它输出的也是我们在不同命名空间中给定的同名变量存储的不同的值。这就是命名空间的基本概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值