Ruby/Stałe klasowe
Z Wikibooks, biblioteki wolnych podręczników.
< Ruby
[edytuj] Stałe klasowe
Nazwa stałej zaczyna się od dużej litery. Stałej nie powinno przypisywać się wartości więcej niż jeden raz. W bieżącej implementacji Rubiego ponowne przypisanie wartości do stałej generuje ostrzeżenie, ale nie błąd:
irb(main):001:0> zmienna = 30 => 30 irb(main):002:0> zmienna = 31 => 31 irb(main):003:0> Stala = 32 => 32 irb(main):004:0> Stala = 33 (irb):4: warning: already initialized constant Stala => 33
Stałe mogą być definiowane wewnątrz klas, ale w przeciwieństwie do zmiennych instancji lub zmiennych klasowych, są one dostępne na zewnątrz klasy.
class Stale S1=101 S2=102 S3=103 def pokaz puts "#{S1} #{S2} #{S3}" end end #puts S1 #=> .../main.rb:9: uninitialized constant S1 (NameError) puts Stale::S1 #=> 101 Stale.new.pokaz #=> 101 102 103
Stałe mogą być również definiowane w modułach.
module StaleModul S1=101 S2=102 S3=103 def pokaz_stale puts "#{S1} #{S2} #{S3}" end end #puts S1 #=> .../main.rb:10: uninitialized constant S1 (NameError) include StaleModul puts S1 #=> 101 pokaz_stale #=> 101 102 103 S1=99 # nie najlepszy pomysl puts S1 #=> 99 StaleModul::S1 #=> 101 StaleModul::S1=99 # ...to nie bylo mozliwe we wczesniejszych wersjach #=> /main.rb:10: uninitialized constant S1 (NameError) #pelna swoboda by strzelic sobie w stope puts StaleModul::S1 #=> 99