Рубин: Есть ли драгоценный камень с методом attr_initialize? - PullRequest
1 голос
/ 07 марта 2011

Существует ли какой-нибудь популярный гем ruby, определяющий метод класса 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 ]

2 голосов
/ 18 октября 2012

Наши attr_extras близки.

Он преднамеренно не обрабатывает аргументы по умолчанию, необязательные аргументы или нечто большее, чем присваивание - если вы хотите этого, вам, вероятно, следует просто определить обычный метод.

1 голос
/ 08 марта 2011

Тебе это не нужно. Просто напишите что-то вроде:

attr_accessor :attr1, :attr2, :attr3

def initialize(*attrs)
  @attr1, @attr2, @attr3 = attrs
  post_initialization attrs.last
end

Для меня это не выглядит слишком много кода.

...