8.2. Zarządzanie danymi klasowymi
Problem
Chcemy zdefiniować zmienną stanowiącą własność klasy, nie każdego jej obiektu z osobna, wspólną dla wszystkich jej obiektów.
Rozwiązanie
Zmienną stanowiącą własność klasy (w odróżnieniu od zmiennej instancyjnej, stanowiącej własność konkretnego obiektu) definiuje się, poprzedzając jej nazwę parą znaków @@
. W poniższym przykładzie definiowana jest jedna zmienna instancyjna i jedna zmienna klasowa:
class Warning @@translations = { :pl => 'Świeżo malowane', :en => 'Wet Paint' } def initialize(language=:pl) @language = language end def warn @@translations[@language] end end Warning.new.warn # => "Świeżo malowane" Warning.new(:en).warn # => "Wet Paint"
Dyskusja
Zmienne klasowe służą do przechowywania ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.