Извините за хромое название: я не знаю, как подвести итог этого ...
У меня есть набор классов, которые являются формулами (или формулами, если хотите), и другой набор классов (назовите их внешними классами), которые будут их использовать.
Классы формул имеют много атрибутов (скажем, около 20) и функцию вычисления. Внешний класс является классом персистентности и поэтому имеет все атрибуты класса формул и еще несколько его собственных.
В моей системе пользователи могут настроить, какой класс формул использовать, и действительно могут рассчитывать, используя, например, несколько формул для сравнительного отчета.
Я пытаюсь выяснить, как передать значения атрибута между внутренним классом / формулой и внешним / персистентным классом без строки за строкой inner.x = outer.x
кода.
Мне кажется, я не могу использовать:
class Outer
include Formula1
end
... потому что я хочу, чтобы фактический класс Formula был настраиваемым.
Одна идея, которая приходит на ум, заключается в том, что я мог бы иметь массив атрибутов для передачи из моего внешнего класса и циклически перебирать их и send
, примерно так:
# not tested
['x', 'y', 'z'].each{|a|@formula.send("#{a.to_sym}=", self.send("#{a.to_sym}") }
Любая другая рубиновая магия или шаблоны, которые я должен рассмотреть?
Спасибо