A alias o metodă sau un nume variabil în Ruby înseamnă a crea un al doilea nume pentru metodă sau variabilă. Aliasing-ul poate fi utilizat fie pentru a oferi opțiuni mai expresive programatorului folosind clasa, fie pentru a ajuta la înlocuirea metodelor și a schimba comportamentul clasei sau obiectului. Ruby oferă această funcționalitate cu cuvintele cheie „alias” și „alias_method”.
Cuvântul cheie alias are două argumente: numele metodei vechi și noua metodă. Numele metodei trebuie transmise ca etichete, spre deosebire de șiruri. Etichetele sunt utilizate pentru a face referire la metode și variabile fără a le face referire directă. Dacă sunteți un nou programator Ruby, conceptul de etichete poate părea ciudat, dar de fiecare dată când vedeți o etichetă de genul „: nume de metodă”, doar citiți-l ca „lucrul numit metodă”. Următorul exemplu declară o nouă clasă și creează un alias pentru metoda on numită start.
#! / usr / bin / env ruby
clasa cu microunde
def on
pune "Cuptorul cu microunde este pornit"
Sfârșit
alias: start: on
Sfârșit
m = microunde.nou
m.start # la fel ca m.on
Pot exista momente în care doriți să schimbați comportamentul unei clase după ce a fost declarată. Puteți alias și adăuga metode noi la o clasă existentă creând o declarație de a doua clasă care are același nume ca declarația de clasă existentă. Puteți adăuga, de asemenea, aliasuri și metode la obiecte individuale folosind o sintaxă similară cu sintaxa clasei moștenite. Comportamentul oricărei clase poate fi modificat prin crearea unui alias pentru orice metodă și apoi crearea unei noi metode (cu numele metodei originale) care apelează metoda cu alias.
În exemplul următor, o clasă cu microunde este declarată și este creată o instanță. Cea de-a doua declarație folosește metoda alias pentru a schimba comportamentul metodei „on” pentru a adăuga un mesaj de avertizare. Declarația de clasa a treia este utilizată pentru a schimba comportamentul specifică instanței de microunde pentru a adăuga un avertisment și mai dur. Când alias o metodă de mai multe ori, asigurați-vă că utilizați diferite metode pentru a stoca metoda veche.
#! / usr / bin / env rubyclass Microunde
def on pune "Microunde este pe" capăt endm = Microwave.newm.onclass Alias microwave: old_on1: on
def on pune „Avertisment: nu introduceți obiecte metalice!” end old_on1 Sfârșit
m.on
# Mesaj pentru acest cuptor cu microunde
clasă < def on
pune „Acest microunde este slab, adăugați timp suplimentar”
old_on2
Sfârșit
Sfârșit
m.on # Afișează un mesaj suplimentar
m2 = Microunde.new
m2.on # Nu afișează un mesaj suplimentar