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

Posted in  | no comments

Comments

(leave url/email »)

   Preview comment