在学习红宝石的同时,我还学习了其中的“使用别名”。我不明白在示例中使用别名有什么区别:
def oldmtd
"old method"
end
alias newmtd oldmtd
def oldmtd
"old improved method"
end
puts oldmtd
puts newmtd带输出
old improved method
old method只为这个函数分配一个新变量,比如:
def oldmtd
"old method"
end
newmtd = oldmtd
def oldmtd
"old improved method"
end
puts oldmtd
puts newmtd具有相同的输出:
old improved method
old method请告诉我什么是实际的区别,什么时候使用‘别名’是正确的?
发布于 2019-11-20 16:23:14
使用newmtd = oldmtd,您不是将一个新变量赋值给函数;而是将一个变量分配给函数的结果,即字符串。用Python术语:newmtd = oldmtd()
发布于 2019-11-20 16:26:03
别名允许您调用具有不同名称的对象。当您执行变量赋值时,您将为它分配=运算符右侧返回的任何值。
当您重新定义原始方法时,您也重新定义了别名方法,因为它仍然调用它已被别名的原始方法。
但是,如果要对方法进行混叠,则可能需要使用alias_method。有关此问题的更多信息,请参见this question。
至于何时或为什么使用别名,请参见answers to this question。
https://stackoverflow.com/questions/58958567
复制相似问题