Undefined method store for nil:NilClass (NoMethodError)

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

Il giorno lun, 16/04/2007 alle 16.52 +0200, Mauro S. ha scritto:

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

no answers?

Mauro S. wrote:

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

Mauro S. wrote:

Il giorno lun, 16/04/2007 alle 16.52 +0200, Mauro S. 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

On 4/17/07, david [email protected] wrote:

Confermo la necessità di usare initialize per poter avere qualcosa di
funzionante. Nel codice sotto riportato trovi anche due righe che
istanziano
un oggetto e richiamano il metodo e tutto è ok.

Nel caso in cui non ti piaccia l’idea di inizializzare, alla tua
versione
iniziale potresti modificare le variabili di istanza (che iniziano con
@) in
variabili di classe (che iniziano con @@). In questo modo non devi prima
istanziare un oggetto (e quindi fare l’inizializzazione). Credo comunque
che
questo non sia un modo elegante di risolvere il problema.


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}”)
print @dir[“#{mail}”]
# rest of code
end
end

end

test = Prova.new
test.acquisisciAccounts


Andrea R.

: : i’m a miner : : | therubymine.com | now in Amsterdam

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:

Hum hum… ma sei sicuro che sta lì il problema? Ho scritto codice come
il suo, senza initialize e m’è parso funzionare. Boh.


“Blasphemy is an artistic effect, because blasphemy depends upon a
philosophical conviction. Blasphemy depends upon belief and is fading
with it. If any one doubts this, let him sit down seriously and try to
think blasphemous thoughts about Thor. I think his family will find him
at the end of the day in a state of some exhaustion.” — G. K.
Chesterton, Heretics