Previous
Prev
Contents
Contents
Next
Next
 Ruby user's guide Class constants  

A constant has a name starting with an uppercase character.  It should be assigned a value at most once.  In the current implementation of ruby, reassignment of a constant generates a warning but not an error (the non-ANSI version of eval.rb does not report the warning):

 ruby>fluid=30
   30
 ruby>fluid=31
   31
 ruby>Solid=32
   32
 ruby>Solid=33
 (eval):1: warning: already initialized constant Solid
   33

Constants may be defined within classes, but unlike instance variables, they are accessible outside the class.

 ruby> class ConstClass
     |   C1=101
     |   C2=102
     |   C3=103
     |   def show
     |     print C1," ",C2," ",C3,"\n"
     |   end
     | end
    nil
 ruby> C1
 ERR: (eval):1: uninitialized constant C1
 ruby> ConstClass::C1
    101
 ruby> ConstClass.new.show
 101 102 103
    nil

Constants can also be defined in modules.

 ruby> module ConstModule
     |   C1=101
     |   C2=102
     |   C3=103
     |   def showConstants
     |     print C1," ",C2," ",C3,"\n"
     |   end
     | end
    nil
 ruby> C1
 ERR: (eval):1: uninitialized constant C1
 ruby> include ConstModule
    Object
 ruby> C1
    101
 ruby> showConstants
 101 102 103
    nil
 ruby> C1=99  # not really a good idea
    99
 ruby> C1
    99
 ruby> ConstModule::C1  # the module's constant is undisturbed ...
    101
 ruby> ConstModule::C1=99 
 ERR: (eval):1: compile error
 (eval):1: parse error
 ConstModule::C1=99
                 ^
 ruby> ConstModule::C1  # .. regardless of how we tamper with it.
    101

Previous
Prev
Contents
Contents
Next
Next