9.8. Inicjowanie zmiennych instancyjnych dołączanego modułu
Podziękowania dla Phila Thomsona
Problem
Dołączyliśmy do klasy domieszkę definiującą własne zmienne instancyjne. Chcielibyśmy inicjować te zmienne każdorazowo, gdy utworzony zostanie obiekt naszej klasy.
Rozwiązanie
Należy w dołączanym module zdefiniować metodę initialize
, w której ciele wykonywane będzie wspomniane inicjowanie. Metodę tę należy wywoływać w konstruktorze klasy za pomocą instrukcji super()
. Oto przykładowy moduł Timeable
, umożliwiający śledzenie momentów tworzenia obiektów danej klasy i informowanie o czasie istnienia każdego z nich:
module Timeable attr_reader :time_created def initialize @time_created = Time.now end def age # czas istnienia obiektu w sekundach ...
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.