1

attr_initializeクラスメソッドを定義する人気のあるrubygemはありますか?これは次のように動作します:

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
4

2 に答える 2

2

attr_extrasは近くにあります

意図的にデフォルトの引数、オプションの引数、または割り当て以上のものを処理しません。必要に応じて、通常のメソッドを定義する必要があります。

于 2012-10-18T19:22:50.707 に答える
1

あなたはそれを必要としません。次のように書いてください。

attr_accessor :attr1, :attr2, :attr3

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

私には、あまり多くのコードのようには見えません。

于 2011-03-08T03:08:45.237 に答える