Рубин: Есть ли драгоценный камень с методом attr_initialize?
Есть ли популярный рубиновый гем, который определяет метод класса attr_initialize, который ведет себя следующим образом:
attr_initialize :attr1, :@attr2, [:@attr3, 1] do |arg4|
post_initialization(arg4)
end
будет эквивалентен чему-то эквивалентному:
attr_accessor :attr1
def initialize(attr1, attr2, attr3 = 1, arg4 = nil)
@attr1 = attr1
@attr2 = attr2
@attr3 = attr3
post_initialization(arg4)
end
2 ответа
Решение
Наш attr_extras близок.
Он намеренно не обрабатывает аргументы по умолчанию, необязательные аргументы или нечто большее, чем присваивание - если вы хотите этого, вам, вероятно, следует просто определить обычный метод.
Тебе это не нужно. Просто напишите что-то вроде:
attr_accessor :attr1, :attr2, :attr3
def initialize(*attrs)
@attr1, @attr2, @attr3 = attrs
post_initialization attrs.last
end
Для меня это не выглядит слишком много кода.