Messaggio di errore Undefined

Salve!! Premetto che sto’ iniziando ora a programmare con Ruby
Questo e’ il semplice listato di esempio:
---------------- inizio --------------
lass Gatto
def initialize(nome)
end
def miagola
puts “miao!!”
end
silvestro=Gatto.new(“silvestro”)
puts "Ciao !! Mi chiamo #{nome} e faccio " + silvestro.miagola

end
------------------- fine -------------
L’errore che mi da’ e’ questo:
---------------- inizio mess. errore -----------
C:/Users/User/Downloads/ruby/komodo/prova01.rb:10: undefined local
variable or method `nome’ for Gatto:Class (NameError)
---------------- fine mess. di errore ------------------
Dove e’ che sbaglio?
Grazie per quanti vorranno aiutarmi.

Devi dichiarare una variabile di classe che memorizzi il nome e poi
inizializzarla
dentro il metodo initialize con l’argomento che passi con new.
In questo modo :

class Gatto
attr_reader:nome
def initialize(nome)
@nome=nome
end
def miagola
“miao!!”
end
end
silvestro=Gatto.new(“silvestro”)
puts "Ciao !! Mi chiamo #{@nome} e faccio " + silvestro.miagola

attr_reader significa che è un variabile (o attributo in questo caso) di
sola lettura
Inoltre nel metodo miagola devi togliere il puts e lasciare solo la
stringa
Ciao Giova

----- Original Message -----
From: “Giovanni C.” [email protected]
To: [email protected]
Sent: Monday, April 30, 2007 6:07 PM
Subject: [ruby-it] Messaggio di errore Undefined

Scusa il codice corretto è questo :

class Gatto
attr_reader:nome
def initialize(nome)
@nome=nome
end
def miagola
“miao!!”
end
end
silvestro=Gatto.new(“silvestro”)
puts "Ciao !! Mi chiamo #{silvestro.nome} e faccio " + silvestro.miagola

Non ti avevo messo #{silvestro.nome} ma solo #{nome} (devi infatti
riferirti all’istanza della classe per avere un suo attributo)
Ciao ancora

----- Original Message -----
From: “Plazzo” [email protected]
To: [email protected]
Sent: Monday, April 30, 2007 7:42 PM
Subject: Re: [ruby-it] Messaggio di errore Undefined

def miagola
Ciao Giova

---------------- inizio --------------
------------------- fine -------------



Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.467 / Virus Database: 269.6.2/781 - Release Date:
30/04/2007
9.14

un altra soluzione potrebbe essere

class Gatto(nome)
def initialize(nome)
@nome = nome
end
def miagola
“miao!”
end
end

anche io sono agli inizi quindi sono poco affidabile! :smiley:

Il giorno 30/apr/07, alle ore 18:07, Giovanni C. ha scritto:

ecco questa è una bella spiegazione questo punto no mi era chiaro
grazie!!!
:smiley:
sono proprio alle prime armi ma è confrontandosi che si impara :smiley:

Il giorno 01/mag/07, alle ore 09:40, Gendag ha scritto:

Il giorno 30/apr/07, alle ore 19:42, Plazzo ha scritto:

Devi dichiarare una variabile di classe che memorizzi il nome e poi
inizializzarla
dentro il metodo initialize con l’argomento che passi con new.

Ocio che quella variabile e’ di istanza, non di classe :slight_smile:
@@nome sarebbe di classe, ma non è quello che volete.

ngw


Nicholas W.
[email protected]
http://www.tochunky.org

luca sabato wrote:

un altra soluzione potrebbe essere

class Gatto(nome)
def initialize(nome)
@nome = nome
end
def miagola
“miao!”
end
end
qui manca la definizione del metodo “nome”, quindi dall’esterno
non e’ possibile accedere al valore di nome, come vorrebbe fare Giovanni
in:
puts "Ciao !! Mi chiamo #{silvestro.nome} e faccio " + silvestro.miagola

per aggiungerlo, o lo definisci esplicitamente:

class Gatto(nome)
def initialize(nome)
@nome = nome
end
def miagola
“miao!”
end
def nome
@nome
end
end

o utilizzi il metodo “attr_reader” come ha fatto Plazzo.

ciao!
Gendag

Grazie per le risposte e la pazienza. Sto’ iniziando adesso e ancora
trovo difficolta’ a capire l’OOP e i suoi concetti.

Di nuovo grazie e alle prossime domande…ehehehe!!!

E’ vero mi sono spiegato male, ma avevo
chiaro quello che intendevo.
Grazie per la precisazione, ciao
Giovanni

Il giorno 02/05/07, alle ore 01:36 Nicholas ha scritto:

Ocio che quella variabile e’ di istanza, non di classe :slight_smile:
@@nome sarebbe di classe, ma non è quello che volete.

ngw


Nicholas W.
[email protected]
http://www.tochunky.org


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.467 / Virus Database: 269.6.2/784 - Release Date:
01/05/2007
14.57