赞 | 13 |
VIP | 118 |
好人卡 | 28 |
积分 | 12 |
经验 | 35779 |
最后登录 | 2017-7-6 |
在线时间 | 1564 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1195
- 在线时间
- 1564 小时
- 注册时间
- 2008-7-30
- 帖子
- 4418
|
怎么说呢?alias的最直接作用就是“给方法取别名”了(当然也可以给变量)。譬如下面的左图,x指代了某种东西,那么我们给x取别名y,那么用y也可以访问到同样的东西了。
那alias究竟有什么实际的用处呢?这个通常体现在对方法的应用上。假设有一个叫作“old”的方法,我们想向old中添加新的代码。这时候就遇到了两个困难:
- 我们不知道何处也调用了这个old方法,所以我们不能简单的新定义一个方法来添加内容。
- old方法对我们来说是个黑盒(Black Box),我们在运行时(Runtime)我们没有简单的方法将其内部定义给抽取出来。
所以,就用到了给方法取别名的技术,就像下图这样:
我们给这个叫old的方法取了一个叫new的别名,这两者都指代的是同一个方法。然后重新定义old,意思将old与另外一个东西关联起来,而不是去修改old关联的东西。将old定义为什么呢?就是之前那个old方法,由于“old”这个名字不再指代那个方法了,所以我们就用它的别名“new”来指代。这个新定义的东西,对我们来说是开放的,所以我们可以为它添加东西。
这样,其它地方如果调用了old,也能享受我们定义的新内容所带来的福利。
|
评分
-
查看全部评分
|