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
Précédent : GDU : Variables locales Suivant : GDU : Gestion des exceptions : rescue

