# Messaggio di errore Undefined

**URL:** <https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006>\
**Category:** IT\
**Created:** [April 30, 2007, 6:07pm UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006 "2007-04-30T18:07:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [April 30, 2007, 6:07pm UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/1 "2007-04-30T18:07:09Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [April 30, 2007, 7:43pm UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/2 "2007-04-30T19:43:15Z")

</div>

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.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Monday, April 30, 2007 6:07 PM  
Subject: [ruby-it] Messaggio di errore Undefined

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [April 30, 2007, 7:57pm UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/3 "2007-04-30T19:57:20Z")

</div>

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” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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  
removed\_email\_address@domain.invalid  
[http://lists.ruby-it.org/mailman/listinfo/ml](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

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [April 30, 2007, 9:31pm UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/4 "2007-04-30T21:31:26Z")

</div>

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! 😃

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

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [May 1, 2007, 12:48pm UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/5 "2007-05-01T12:48:49Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [May 2, 2007, 1:37am UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/6 "2007-05-02T01:37:14Z")

</div>

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 🙂  
@@nome sarebbe di classe, ma non è quello che volete.

ngw

–  
Nicholas W.  
removed\_email\_address@domain.invalid  
[http://www.tochunky.org](http://www.tochunky.org)

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [May 1, 2007, 9:41am UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/7 "2007-05-01T09:41:35Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [May 2, 2007, 1:37am UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/8 "2007-05-02T01:37:42Z")

</div>

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!!!

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [May 2, 2007, 10:42am UTC](https://www.ruby-forum.com/t/messaggio-di-errore-undefined/103006/9 "2007-05-02T10:42:51Z")

</div>

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 🙂  
> @@nome sarebbe di classe, ma non è quello che volete.

ngw

–  
Nicholas W.  
removed\_email\_address@domain.invalid  
[http://www.tochunky.org](http://www.tochunky.org)

* * *

Ml mailing list  
removed\_email\_address@domain.invalid  
[http://lists.ruby-it.org/mailman/listinfo/ml](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
