设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2581|回复: 4
打印 上一主题 下一主题

alias有什么用处

 关闭 [复制链接]

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
跳转到指定楼层
1
发表于 2008-4-23 01:46:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在自订的方法里追加定义MS都会用到alias???
实际上应该怎么用??

例如:
class ABC
def apple
p "you are a "
......
end
在ABC类中 的 自订的方法apple中
追加定义 p "teacher."
alias怎么用??

如果懂得用alias,
class ABC里相同的东西就不会再重写一遍吧??
版务信息:本贴由楼主自主结贴~

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
2
发表于 2008-4-23 02:03:13 | 只看该作者
语法:

alias 新方法名 旧方法名

给方法或全局变量添加别名。可以给方法名指定一个标识符或 Symbol(不能写 obj.method 这样的表达式)。 alias 的参数不会被计算。

给方法添加别名时,别名方法将继承此刻的原始方法。此后,即使原始方法被重新定义,别名方法仍然保持着重定义前的老方法的特性。若您改变了某方法的内容后,又想使用修改前的方法时,别名会非常有用
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
142
在线时间
264 小时
注册时间
2006-11-22
帖子
1057
3
发表于 2008-4-23 03:02:47 | 只看该作者
alias apple2 apple
def apple
apple2
p "teacher."
end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2008-2-13
帖子
1740
4
发表于 2008-4-23 03:06:06 | 只看该作者
举个例子
class Window_Base < Window
alias xrxs_mp7_initialize initialize
def initialize(x, y, width, height)
   xrxs_mp7_initialize(x, y, width, height)
   if $scene.is_a?(Scene_Menu) or
      $scene.is_a?(Scene_Item) or
      $scene.is_a?(Scene_Skill) or
      $scene.is_a?(Scene_Equip) or
      $scene.is_a?(Scene_Status)

     self.back_opacity = 0
   end
end
end

短小点的例子.
alias xrxs_mp7_initialize initialize #为老方法定义新的别名

xrxs_mp7_initialize(x, y, width, height) #先调用老方法,相当于把老方法重写了一遍
  
if $scene.is_a?(Scene_Menu) or
  $scene.is_a?(Scene_Item) or
  $scene.is_a?(Scene_Skill) or
  $scene.is_a?(Scene_Equip) or
  $scene.is_a?(Scene_Status)
  self.back_opacity = 0  #————这个数值可调,为透明程度0为完全透明
end

增加新的内容

那么,以后调用window_base的时候,实际上是调用现在新的initialize.


怎么说呢,首先,基本上这个alias 可以少写原来已有的整段整段的脚本.但是,如果有判断的地方,使用时就要注意了.新加的内容,不可以老方法的条件判断内.


def old
if oldx == 0
  oldx = 1
end
end
比如,我们如果想改,oldx=0时,oldx=2,不能用以下方法.
alias new old
def old
new
oldx = 2
end
在这个方法下,不管oldx为任何值,都会被赋值2
相当于,执行的是这个过程.

def old
if oldx == 0   
  oldx = 1
end
oldx = 2
end

所以,alias中,新方法对老方法的调用,是整段调用的,对于条件开关之类,一定要小心.
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
好吧,果然换个签名就没人认识我了。我承认我被时间埋没了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

5
发表于 2008-4-23 03:49:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-1 14:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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