用紅寶石混疊一種方法

別名Ruby中的方法或變量名稱是為方法或變量創(chuàng)建第二個名稱。別名可以用來為使用類的程序員提供更多表達性的選項,或者幫助覆蓋方法并改變類或對象的行為。Ruby使用"別名"and"別名U方法"關鍵字提供此功能。

創(chuàng)建第二個名稱

別名關鍵字有兩個參數:舊方法名稱和新方法名稱。方法名稱應作為標簽傳遞,而不是字符串。標簽用于引用方法和變量而不直接引用它們。如果您'是一位新的紅寶石程序員,標簽的概念可能看起來很奇怪,但每當您看到像"這樣的標簽;:methodname,"只需將其讀取為"稱為methodname。"下面的例子聲明了一個新的類,并為稱為start的on方法創(chuàng)建了一個別名。

 #!/usr/bin/env ruby
class Microwave
def on
puts"Microwave on"
end
別名:start:on
end
m=微波
m.sta

科普視頻下載

改變類的行為

在聲明'之后,可能有時候你想改變一個類的行為。您可以通過創(chuàng)建與現有類聲明名稱相同的第二類聲明來別名并將新方法添加到現有類中。您還可以使用類似于繼承類語法的語法將別名和方法添加到單個對象。任何類的行為都可以通過為任何方法創(chuàng)建別名,然后創(chuàng)建一個新方法(使用原始方法名稱)來更改,該方法使用別名調用該方法。

在下面的示例中,聲明微波類并創(chuàng)建一個實例。第二類聲明使用別名方法更改"on"方法的行為,以添加警告消息。第三類聲明用于更改特定微波實例的行為以添加更嚴格的警告。多次混疊方法時,請務必使用不同的方法名稱來存儲舊方法。

#!/usr/bin/env rubyclass微波
def on puts"微波on"end
endm=微波.newm.onclass微波別名:oldon1:on
def on puts"警告:請勿插入金屬物體!"此特定微波
class
put"此微波較弱,添加額外時間"
old?on2
end
end
m.on#顯示額外消息
m2=微波
m2.on#不分散

教育_1