查看: 2053|回复: 2

[已经解决] alias 新函数名 旧函数名 看不懂

[复制链接]
梦石
0
星屑
50
在线时间
10 小时
注册时间
2011-7-23
回帖
9
发表于 2013-4-23 09:35:08 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
谁能给我解释下刚才在从0开始学RGSS2中看到了这一步就看不出懂了.
[
梦石
0
星屑
50
在线时间
10 小时
注册时间
2011-7-23
回帖
9
 楼主| 发表于 2013-4-23 10:20:57 | 显示全部楼层
lairen a

评分

参与人数 1星屑 -10 收起 理由
怪蜀黍 -10 12小时内自顶

查看全部评分

[
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2013-4-26 13:12:09 | 显示全部楼层
怎么说呢?alias的最直接作用就是“给方法取别名”了(当然也可以给变量)。譬如下面的左图,x指代了某种东西,那么我们给x取别名y,那么用y也可以访问到同样的东西了。

pic1.png


那alias究竟有什么实际的用处呢?这个通常体现在对方法的应用上。假设有一个叫作“old”的方法,我们想向old中添加新的代码。这时候就遇到了两个困难:

  • 我们不知道何处也调用了这个old方法,所以我们不能简单的新定义一个方法来添加内容。
  • old方法对我们来说是个黑盒(Black Box),我们在运行时(Runtime)我们没有简单的方法将其内部定义给抽取出来。


所以,就用到了给方法取别名的技术,就像下图这样:

pic2.png


我们给这个叫old的方法取了一个叫new的别名,这两者都指代的是同一个方法。然后重新定义old,意思将old与另外一个东西关联起来,而不是去修改old关联的东西。将old定义为什么呢?就是之前那个old方法,由于“old”这个名字不再指代那个方法了,所以我们就用它的别名“new”来指代。这个新定义的东西,对我们来说是开放的,所以我们可以为它添加东西。

这样,其它地方如果调用了old,也能享受我们定义的新内容所带来的福利。

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 图文并茂

查看全部评分


See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部