Ruby/Stałe klasowe: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Szymon wro (dyskusja | edycje)
Linia 1:
== Stałe klasowe ==
 
Nazwa stałej zaczyna się od dużej litery. PowinnaStałej jejnie byćpowinno przypisanaprzypisywać wartość,się najwyżejwartoś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 (wersja nie-ANSI programu ''eval.rb'' nie pokaże ostrzeżenia):
 
<pre>
ruby>fluidzmienna=30
30
ruby>fluidzmienna=31
31
ruby>SolidStala=32
32
ruby>SolidStala=33
(eval):1: warning: already initialized constant SolidStala
33
</pre>
 
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.
 
<pre>
ruby> class ConstClassStale
| C1S1=101
| C2S2=102
| C3S3=103
| def showpokaz
| puts "#{C1S1} #{C2S2} #{C3S3}"
| end
| end
nil
ruby> C1S1
ERR: (eval):1: uninitialized constant C1S1
ruby> ConstClassStale::C1S1
101
ruby> ConstClassStale.new.showpokaz
101 102 103
nil
Linia 39:
 
<pre>
ruby> module ConstModuleStaleModul
| C1S1=101
| C2S2=102
| C3S3=103
| def showConstantspokaz_stale
| puts "#{C1S1} #{C2S2} #{C3S3}"
| end
| end
nil
ruby> C1S1
ERR: (eval):1: uninitialized constant C1S1
ruby> include ConstModuleStaleModul
Object
ruby> C1S1
101
ruby> showConstantspokaz_stale
101 102 103
nil
ruby> C1S1=99 # notnie reallyza adobry good ideapomysl
99
ruby> C1S1
99
ruby> ConstModuleStaleModul::C1S1
101
ruby> ConstModuleStaleModul::C1S1=99 # .. thisto wasnie notbylo allowedmozliwe inwe earlierwczesniejszych versionswersjach
(eval):1: warning: already initialized constant C1S1
99
ruby> ConstModuleStaleModul::C1S1 # "enoughpełna ropeswoboda toby shootstrzelic yourselfsobie inw the foot"stope
99
</pre>