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

Gendag gendag a gmail.com
Mar 17 Apr 2007 09:41:13 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