Я хотел бы написать модуль, обеспечивающий функциональность, подобную активной записи, в переменной экземпляра массива.
Примеры его использования:
x = Container.new
x.include(ContainerModule)
x.elements << Element.new
x.elements.find id
module ContainerModule
def initialize(*args)
@elements = []
class << @elements
def <<(element)
#do something with the Container...
super(element)
end
def find(id)
#find an element using the Container's id
self
#=> #<Array..> but I need #<Container..>
end
end
super(*args)
end
end
Проблема в том, что мне нужен объект-контейнер в этих методах. Любая ссылка на себя вернет Array, а не объект Container.
Есть ли способ сделать это?
Спасибо!