Rails 3.1の<<オペレーターで複数のオブジェクトを挿入できますか?
-
25-10-2019 - |
質問
次のことを書いてもらえますか...
raw_data.categories.each do |category|
obj.categories << category
end
代わりに次のように? ...
obj.categories << raw_data.categories
解決
obj.categories |= raw_data.categories
他のヒント
を見てみましょう Array#<<
と Array#push
.
Array#<<
配列を与えられた配列に適切に追加されたものを取ります。例えば:
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array << 'd' # => ["a", "b", "c", "d"]
ただし、配列を渡すと、結果に驚くでしょう
irb> array << ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Array#push
1つ以上のオブジェクトを処理でき、それぞれが配列に追加されます。
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array.push 'd' # => ["a", "b", "c", "d"]
ただし、呼び出します #push
配列を使用すると、同じ結果が得られます #<<
.
irb> array.push ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
配列内のすべての要素をプッシュするために、 *
2番目の配列の前。
irb> array.push *['e', 'f', 'g'] # => ["a", "b", "c", "d", "e", "f", "g"]
関連するメモで Array#+
配列を連結している場合、重複値も許可します。
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array += ['d'] # => ["a", "b", "c", "d"]
irb> array += ['d'] # => ["a", "b", "c", "d", "d"]
これが望ましくない場合、 |
オペレーターは、2つのアレイの組合を複製することなく返却します。
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
所属していません StackOverflow