1

Ruby でデータ (およびそのデータに対するいくつかのメソッド) を格納するために使用しているいくつかのクラスがあります。例えば:

class Foo
  def initialize(bar, biz, baz)
    @bar=bar
    @biz=biz
    @baz=baz
  end
end

これらの初期化引数をインスタンス変数に伝播するための反復の少ない方法はありますか?

4

3 に答える 3

2

1つのライナーですが、これは物事をあいまいにする可能性があることがわかりました:

@bar,@biz,@baz = bar,biz,baz
于 2013-11-11T04:19:24.943 に答える
1
class Foo
  def initialize(*args)
    raise ArgumentError unless args.length == 3
    @bar, @biz, @baz = args
  end
end
于 2013-11-11T04:19:31.800 に答える
0

簡単な方法の 1 つは、 Structを使用することです。

class Foo < Struct.new(:bar, :biz, :baz)
  # custom methods go here
end

Struct.new は、初期化子とアクセサーが設定されたクラスを返します (それ以外は、通常のクラスです)。カスタム メソッドが必要ない場合は、構造体をインラインで定義することもできます (例: Foo = Struct.new(:bar, :biz, :baz))。

于 2013-11-11T04:42:35.963 に答える