Ba macro này tự động sinh getter/setter cho instance variable:
| Macro | Sinh ra | Dùng khi |
|---|---|---|
attr_reader :x | def x = @x | chỉ đọc |
attr_writer :x | def x=(v); @x=v; end | chỉ ghi |
attr_accessor :x | cả hai | đọc + ghi |
Đây là ví dụ metaprogramming cơ bản nhất của Ruby — macro gọi define_method nội bộ để sinh method lúc load class.