用紅寶石混疊一種方法

別名Ruby中的方法或變量名稱是為方法或變量創(chuàng)建第二個名稱。別名可以用來為使用類的程序員提供更多表達(dá)性的選項,或者幫助覆蓋方法并改變類或?qū)ο蟮男袨?。Ruby使用"別名"and"別名U方法"關(guān)鍵字提供此功能。

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

別名關(guān)鍵字有兩個參數(shù):舊方法名稱和新方法名稱。方法名稱應(yīng)作為標(biāo)簽傳遞,而不是字符串。標(biāo)簽用于引用方法和變量而不直接引用它們。如果您'是一位新的紅寶石程序員,標(biāo)簽的概念可能看起來很奇怪,但每當(dāng)您看到像"這樣的標(biāo)簽;: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)建與現(xiàn)有類聲明名稱相同的第二類聲明來別名并將新方法添加到現(xiàn)有類中。您還可以使用類似于繼承類語法的語法將別名和方法添加到單個對象。任何類的行為都可以通過為任何方法創(chuàng)建別名,然后創(chuàng)建一個新方法(使用原始方法名稱)來更改,該方法使用別名調(diào)用該方法。

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

#!/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