8.7. Definiowanie wirtualnych atrybutów
Problem
Chcemy stworzyć metody dostępowe dla atrybutu, który nie jest bezpośrednio reprezentowany przez żadną zmienną instancyjną — jego wartość obliczana jest na podstawie wartości wybranych zmiennych instancyjnych.
Rozwiązanie
Dla atrybutu o nazwie <nazwa>
należy zdefiniować metody dostępowe o nazwach <nazwa>
i <nazwa>=
, tak samo, jak robiliśmy to dla zmiennych instancyjnych. To, co będzie się dziać w treści tych metod, jest wewnętrzną sprawą definiującej je klasy; fakt, że w obiektach tej klasy nie istnieje zmienna @
<nazwa>
, jest w ogóle na zewnątrz tej klasy niezauważalny.
W poniższej klasie Arc
definiowane jest sześć metod dostępowych: stopnie
, stopnie=
, radiany
, radiany=
, gradusy
i gradusy= ...
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.