Capire l'ordine di caricamento dei metodi nei moduli in Ruby
Posted by Dibi Store Fri, 05 Oct 2007 09:59:00 GMT
Per evitare errori di difficile individuazione, è bene capire come avvengono i principali meccanismi di caricamento. Oggi illustrerò in che ordine avviene il caricamento dei metodi nei moduli in Ruby, in particolare quando vengono definiti più di una volta.
Come primo esempio un semplice listato, per capire soprattutto di cosa sto parlando:
module Modulo
def test
puts "Primo metodo del modulo Modulo"
end
def test
puts "Secondo metodo del modulo Modulo"
end
end
class Classe
include Modulo
a = Classe.new
a.test
end
Cosa vi aspettate di ricevere come output? Bhe ovviamente possiamo solo provarlo, vi anticipo però che i moduli vengono caricati nell'ordine First in - last Out, ossia il primo ad essere caricato è l'ultimo ad essere eseguito. In sostanza avremo un output come il seguente:
Secondo metodo del modulo Modulo
In pratica questo è vero anche se i metodi si trovano in moduli diversi:
module Modulo
def test
puts "Primo metodo del modulo Modulo"
end
def test
puts "Secondo metodo del modulo Modulo"
end
end
module Modulo2
def test
puts "Primo metodo del modulo Modulo2"
end
def test
puts "Secondo metodo del modulo Modulo2"
end
end
class Classe
include Modulo
include Modulo2
a = Classe.new
a.test
end
Che in questo caso ritorna l'ultima stringa. Consiglio se non è chiaro di effettuare numerosi esempi, ma non abusate di questa tecnica, perchè eventuali errori saranno di difficile individuazione, oltre che a rendere il codice poco leggibile

