Constantes de classe

Le nom d’une constante commence par une majuscule. Elle doit recevoir une valeur au moins une fois. Dans l’implémentation actuelle de ruby, l’affectation d’une nouvelle valeur à une constante génère un avertissement, mais pas une erreur (la version non-ANSI de eval.rb ne rapporte même pas l’avertissement) :


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

Les constantes peuvent être définies au sein des classes, mais contrairement aux variables d’instance, elles sont accessibles en dehors de la classe.


 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

Les constantes peuvent aussi être définies dans des 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  # ceci n'est pas une bonne idée
   99
 ruby> C1
   99
 ruby> ConstModule::C1  # la constante du module reste inchangée... 
   101
 ruby> ConstModule::C1=99 
 ERR: (eval):1: compile error
 (eval):1: parse error
 ConstModule::C1=99
                ^
 ruby> ConstModule::C1  # ... malgré tout ce qu'on tente de lui faire
   101

Guide de l’utilisateur

Précédent : GDU : Variables locales Suivant : GDU : Gestion des exceptions : rescue