23. Sınıf Sabitleri

Bir sabit büyük harfle başlayan bir ada sahiptir. Sabitlere bir kere değer ataması yapılmalıdır. Ruby'nin şu anki uygulamasına göre, sabitlere yeniden değer ataması yapmak hata değil uyarı ile sonuçlanır (eval.rb'nin ANSI olmayan sürümü uyarı değil hata raporlar):

ruby> fluid=30
    30
ruby> fluid=31
    31
ruby> Solid=32
    32
ruby> Solid=33
<main>: warning: already initialized constant Solid
   33

Sabitler sınıflarla beraber tanımlanabilir ancak örnek değişkenlerin aksine sınıfın dışından da erişilebilir durumdadır.

ruby> class SabitSınıfı
    |    C1=101
    |    C2=102
    |    C3=103
    |    def göster
    |       print C1," ",C2," ",C3,"\n"
    |    end
    | end
   :göster
ruby> C1
ERR: uninitialized constant C1
ruby> SabitSınıfı::C1
   101
ruby> SabitSınıfı.new.göster
101 102 103
   nil

Sabitler aynı zamanda modül içinde de tanımlanabilirler.

ruby>module SabitModülü
    |    C1=101
    |    C2=102
    |    C3=103
    |    def sabitleriGöster
    |       print C1," ",C2," ",C3,"\n"
    |    end
    | end
   :sabitleriGöster
ruby> C1
ERR: uninitialized constant C1
ruby> include SabitModülü
   Object
ruby> C1
   101
ruby> sabitleriGöster
101 102 103
   nil
ruby> C1=99  # pek iyi bir fikir değil
   99
ruby> C1
   99
ruby> SabitModülü::C1  # modülün sabiti rahatsız edilmemiş...
   101
ruby> SabitModülü::C1=99  # önceki sürümlerde buna izin verilmez
<main>: warning: already initialized constant SabitModülü::C1
<main>:1: warning: previous definition of C1 was here
   99
ruby> SabitModülü::C1  # sen iste yeter ki...
   99