3

私は2つの配列を持っています:

a = [a1, ..., an]
b = [b1, ..., bn]

aオブジェクトにフィールドとフィールドがあるこれらの配列からオブジェクトの配列を作成したいと思いますb。したがって、次のようになります。

o = [o1, ..., on]

どこでo1.a = a1o1.b = b1そしてo2.a = a2o2.b = b2など。

今、私は持っています:

Obj = Struct.new(:a, :b)
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
objs = []
// Is there a better way of doing the following or is it okay?
a.zip(b).each do |ai|
  objs << Obj.new(ai[0], ai[1])
4

2 に答える 2

4
a.zip(b).map { |args| Obj.new(*args) }

あなたの編集ごとに:

a.zip(b).map { |(a, b)| Obj.new(a, b) }
于 2013-04-30T03:12:22.137 に答える
3

Ruby 1.9 では、次のように動作します。

a = (1..10).to_a
b = (11..20).to_a
o = Struct.new(:a, :b)

a.zip(b).map {|x, y| o.new(x, y) }

# => [#<struct a=1, b=11>, #<struct a=2, b=12> ... ]

複数のパラメーターをブロックに渡すだけで、渡される配列がそれらのパラメーターに展開され*argsますa, b = [1, 11]

于 2013-04-30T03:17:13.643 に答える