Обычно вы можете скрыть это с помощью lazy initializer :
def comments
@comments ||= [ ]
end
Где это заполняет @comments
пустым массивом, если он еще не определен.
Это делает метод add_comment
избыточным, поскольку вы можете просто сделать:
comments << comment
Без какого-либо посредничества.
Теперь обратите внимание, что метод comments
определен как метод mixin, а не как отдельный.Это означает, что он не существует, пока какой-либо другой модуль или класс не вызовет include
для этого модуля.
Чтобы сделать его автономным:
def self.comments
@comments ||= [ ]
end
Теперь вы можете сделать это:
M1.comments << 'New comment'