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
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 -------------
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.
–
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
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.