Costanti di Classe
Una costante ha unnome che comincia con un carattere maiuscolo. Le dovrebbe venire assegnato un valore solo una volta . Nell'implementazione attuale di ruby, assegnazioni successive ad una costante genarano un warning ma non un errore (la versione non-ANSI di eval.rb non riporta il warning):
ruby>fluid=30 30 ruby>fluid=31 31 ruby>Solid=32 32 ruby>Solid=33 (eval):1: warning: already initialized constant Solid 33
Le costanti possono essere definite all'interno delle classi, ma diversamente dalle variabili d'istanza, esse sono accessibili dall'esterno della classe.
ruby> class ConstClass
| C1=101
| C2=102
| C3=103
| def mostra
| print C1," " ,C2," " ,C3,""
| end
| end
nil
ruby> C1
ERR: (eval):1: uninitialized constant C1
ruby> ConstClass::C1
101
ruby> ConstClass.new.mostra
101 102 103
nil
Constants can also be defined in modules.
ruby> module ConstModule
| C1=101
| C2=102
| C3=103
| def mostraCostanti
| print C1," " ,C2," " ,C3,""
| end
| end
nil
ruby> C1
ERR: (eval):1: uninitialized constant C1
ruby> include ConstModule
Object
ruby> C1
101
ruby> mostraCostanti
101 102 103
nil
ruby> C1=99 # idea non tanto buona
99
ruby> C1
99
ruby> ConstModule::C1 # la costante del modulo è indisturbata ...
101
ruby> ConstModule::C1=99
ERR: (eval):1: compile error
(eval):1: parse error
ConstModule::C1=99
^
ruby> ConstModule::C1 # .. indifferentemente da come la incasiniamo.
101
Ti potrebbe interessare anche
commenta la notizia
C'è 1 commento
ordina per
primi
ultimi
+ apprezzati
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!
Chiedi alla nostra Redazione!