Een methode aliasing in Ruby

Als u een methode of variabelenaam in Ruby wilt aliassen, maakt u een tweede naam voor de methode of variabele. Aliasing kan worden gebruikt om de programmeur die de klasse gebruikt meer expressieve opties te bieden of om methoden te helpen negeren en het gedrag van de klasse of het object te wijzigen. Ruby biedt deze functionaliteit met de sleutelwoorden "alias" en "alias_method".

Maak een tweede naam

Het alias-sleutelwoord heeft twee argumenten: de oude methode naam en de nieuwe methode naam. De methodenamen moeten worden doorgegeven als labels, in tegenstelling tot tekenreeksen. Labels worden gebruikt om naar methoden en variabelen te verwijzen zonder ernaar te verwijzen. Als je een nieuwe Ruby-programmeur bent, lijkt het concept van labels misschien vreemd, maar als je een label ziet als ": methodname", lees je het gewoon als "het ding dat methodname wordt genoemd". In het volgende voorbeeld wordt een nieuwe klasse gedeclareerd en wordt een alias gemaakt voor de methode on die start wordt genoemd.

 #! / usr / bin / env ruby
klasse Magnetron
zeker aan
zet "De magnetron staat aan"
einde
alias: start: aan
einde
m = Magnetron. nieuw
m.start # hetzelfde als m.on

Verander het gedrag van een klasse

Er kunnen momenten zijn waarop je het gedrag van een klasse wilt veranderen nadat deze is verklaard. U kunt een alias maken en nieuwe methoden toevoegen aan een bestaande klasse door een tweede klasse-aangifte te maken met dezelfde naam als de bestaande klassenaangifte. U kunt ook aliassen en methoden toevoegen aan afzonderlijke objecten met behulp van een syntaxis die lijkt op de syntaxis van de overgenomen klasse. Het gedrag van elke klasse kan worden gewijzigd door een alias voor elke methode te maken en vervolgens een nieuwe methode (met de oorspronkelijke methode naam) te maken die de methode met de alias aanroept.

In het volgende voorbeeld wordt een microgolfklasse gedeclareerd en wordt een instantie gemaakt. De tweede klassendeclaratie gebruikt de aliasmethode om het gedrag van de "aan" -methode te wijzigen om een ​​waarschuwingsbericht toe te voegen. De derde klasse verklaring wordt gebruikt om het gedrag van de specifieke magnetroninstantie te wijzigen om een ​​nog strengere waarschuwing toe te voegen. Wanneer u een methode meerdere keren gebruikt, moet u ervoor zorgen dat u verschillende methodenamen gebruikt om de oude methode op te slaan.

 #! / usr / bin / env rubyclass Magnetron
def on zet "Magnetron is aan" einde
endm = Microwave.newm.onclass Magnetron alias: old_on1: on
def on zet "Waarschuwing: plaats geen metalen voorwerpen!" old_on1 end
einde
m.on
# Bericht voor deze specifieke magnetron
klasse <  def on
zet "Deze magnetron is zwak, voeg extra tijd toe"
old_on2
einde
einde
m.on # Toont extra bericht
m2 = Magnetron. nieuw
m2.on # Toont geen extra bericht