Att aliasa en metod eller variabelnamn i Ruby är att skapa ett andra namn för metoden eller variabeln. Aliasing kan användas antingen för att ge programmeraren mer uttrycksfulla alternativ som använder klassen eller för att åsidosätta metoder och ändra klassen eller objektets beteende. Ruby tillhandahåller denna funktion med nyckelordet "alias" och "alias_method".
Alias-nyckelordet tar två argument: det gamla metodnamnet och det nya metodnamnet. Metodnamnen ska ges som etiketter, till skillnad från strängar. Etiketter används för att hänvisa till metoder och variabler utan att direkt hänvisa till dem. Om du är en ny Ruby-programmerare kan begreppet etiketter tyckas konstigt, men när du ser en etikett som ": metodnamn", läs bara det som "det som heter metodnamn." Följande exempel förklarar en ny klass och skapar ett alias för on-metoden som kallas start.
#! / usr / bin / env ruby
klass Mikrovågsugn
def på
sätter "Mikrovågsugnen är på"
slutet
alias: start: på
slutet
m = Mikrovågsugn. nytt
m.start # samma som m.on
Det kan finnas tillfällen när du vill ändra beteendet hos en klass efter att det har förklarats. Du kan alias och lägga till nya metoder i en befintlig klass genom att skapa andra klassdeklaration som har samma namn som den befintliga klassdeklarationen. Du kan också lägga till alias och metoder till enskilda objekt med en syntax som liknar den ärvda klasssyntaxen. Vilken klassens beteende kan ändras genom att skapa ett alias för vilken metod som helst och sedan skapa en ny metod (med det ursprungliga metodnamnet) som kallar metoden med aliaset.
I följande exempel förklaras en mikrovågsklass och en instans skapas. Den andra klassdeklarationen använder aliasmetoden för att ändra beteendet på "on" -metoden för att lägga till ett varningsmeddelande. Den tredje klassdeklarationen används för att ändra beteendet hos den specifika mikrovågsinstansen för att lägga till en ännu strängare varning. När du aliaser en metod flera gånger, se till att använda olika metodnamn för att lagra den gamla metoden.
#! / usr / bin / env rubyclass Mikrovågsugn
def på sätter "Mikrovågsugn är på" slut endm = Mikrovågsugn. nym.onklass Mikrovågs alias: gammal_on1: på
def på sätter "Varning: Sätt inte in metallföremål!" old_on1 änden slutet
m.on
# Meddelande för denna specifika mikrovågsugn
klass < def on
sätter "Denna mikrovågsugn är svag, lägg till extra tid"
old_on2
slutet
slutet
m.on # Visar extra meddelande
m2 = mikrovågsugn. nytt
m2.on # Visar inte extra meddelande