Zamplized 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):

fluid=30
fluid=31
Solid=32
Solid=33

Output

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

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

class ConstClass
   C1=101
   C2=102
   C3=103

   def show
     puts "#{C1} #{C2} #{C3}"
   end
end

C1
ConstClass::C1
ConstClass.new.show

Abbreviated Output

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.

module ConstModule
   C1=101
   C2=102
   C3=103

   def showConstants
     puts "#{C1} #{C2} #{C3}"
   end
end

C1
include ConstModule
C1
showConstants
C1=99  # not really a good idea
C1
ConstModule::C1
ConstModule::C1=99   # .. this was not allowed in earlier versions
ConstModule::C1  # "enough rope to shoot yourself in the foot"

Abbreviated Output

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
   101
ruby> ConstModule::C1=99   # .. this was not allowed in earlier versions
   99
ruby> ConstModule::C1  # "enough rope to shoot yourself in the foot"
   99 
(eval):1: warning: already initialized constant C1

Copyright (c) 2005 Mark Slagell

Portions copyright (c) 2005 Zamples, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

A copy of the license is included in the section entitled "GNU Free Documentation License."