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
Redazione
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!