例如:
class ABC
def apple
p "you are a "
......
end
在ABC类中 的 自订的方法apple中 追加定义 p "teacher."
alias怎么用??
如果懂得用alias,
class ABC里相同的东西就不会再重写一遍吧?? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~作者: hitlerson 时间: 2008-4-23 02:03
语法:
alias 新方法名 旧方法名
给方法或全局变量添加别名。可以给方法名指定一个标识符或 Symbol(不能写 obj.method 这样的表达式)。 alias 的参数不会被计算。
给方法添加别名时,别名方法将继承此刻的原始方法。此后,即使原始方法被重新定义,别名方法仍然保持着重定义前的老方法的特性。若您改变了某方法的内容后,又想使用修改前的方法时,别名会非常有用 作者: 3535 时间: 2008-4-23 03:02
alias apple2 apple
def apple
apple2
p "teacher."
end 作者: havealook 时间: 2008-4-23 03: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
如
def old
if oldx == 0
oldx = 1
end
end
比如,我们如果想改,oldx=0时,oldx=2,不能用以下方法.
alias new old
def old
new
oldx = 2
end
在这个方法下,不管oldx为任何值,都会被赋值2
相当于,执行的是这个过程.