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