Ruby/Zmienne klasowe: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m Sprawdziłem w ruby-1.9.1 i 2.0.0-p0 i nie jest to prawda, metoda klasowa może zostać wywołana zarówno na rzecz klasy jak i obiektu
Nie podano opisu zmian
 
Linia 3:
Zmienne ''klasowe'' są współdzielone przez wszystkie instancje danej klasy. W Rubim, do oznaczania zmiennych klasowych używa się prefiksu <tt>@@</tt>. W poniższym przykładzie zmienna <tt>@@ilosc</tt> odzwierciedla całkowitą ilość instancji klasy <tt>Zwierze</tt> utworzonych w czasie działania programu.
 
<sourcesyntaxhighlight lang="ruby">
class Zwierze
@@ilosc = 0
Linia 27:
pies = Zwierze.new
puts pies.populacja # => 4
</syntaxhighlight>
</source>
 
<tt>@@ilosc</tt> jest zmienną klasową. W konstruktorze klasy <tt>Zwierze</tt> zwiększamy ją o jeden, czyli ''inkrementujemy'' (zmniejszanie o jeden nazywamy ''dekrementacją''). Zapis <tt>@@ilosc += 1</tt> jest równoważny zapisowi <tt>@@ilosc = @@ilosc + 1</tt>. Jak widzimy, każde kolejne utworzenie instancji klasy <tt>Zwierze</tt> powoduje zwiększenie o jeden zmiennej <tt>@@ilosc</tt>.