[ruby-it] undefined method store for nil:NilClass (NoMethodError)

Gendag gendag a gmail.com
Mar 17 Apr 2007 09:42:49 CEST


Mauro Sanna wrote:
 > Il giorno lun, 16/04/2007 alle 16.52 +0200, Mauro Sanna ha scritto:
 >> Perche' mi da l'errore di cui all'oggetto?
 >>
 >> class prova
 >>
 >>   @dir = {}
 >>   @a = []
 >>   @dir_spediti = {}
 >>   @dir_ricevuti = {}
 >>     def acquisisciAccounts
 >>     IO.foreach("file.txt") do |riga|
 >>       codice,cognome,nome,servizio,mail = riga.chomp.split(/\t/)
 >>       @dir.store("#{mail}","#{cognome} #{nome}")
 >>       @dir_spediti.store("#{mail}",0)
 >>       @dir_ricevuti.store("#{mail}",0)
 >>     end
 >>   end
 >> end

L'errore ti avvisa che la classe nil:NilClass non ha un metodo chiamato 
store.Ora: tu dove usi questo metodo? Lo usi nelle righe:
 >>       @dir.store("#{mail}","#{cognome} #{nome}")
 >>       @dir_spediti.store("#{mail}",0)
 >>       @dir_ricevuti.store("#{mail}",0)
Quindi vuol dire che o @dir e/o @dir_spediti e/o @dir_ricevuti sono nil 
  e siccome nil non ha il metodo store, ecco perche' ti da l'errore.

Il motivo per cui queste variabili sono nil e non inizializzate nasce, 
probabilmente, dal  fatto che le hai inizializzate nel modo sbagliato,
le istance variable le dovresti inizializzare dentro il metodo initialize:

class prova

   def initialize
     @dir = {}
     @a = []
     @dir_spediti = {}
     @dir_ricevuti = {}
   end

   def acquisisciAccounts
     IO.foreach("file.txt") do |riga|
       codice,cognome,nome,servizio,mail = riga.chomp.split(/\t/)
       @dir.store("#{mail}","#{cognome} #{nome}")
       @dir_spediti.store("#{mail}",0)
       @dir_ricevuti.store("#{mail}",0)
     end
   end
end

ciao!
Gendag


Maggiori informazioni sulla lista Ml