Puis-je écrire ce qui suit ...
raw_data.categories.each do |category|
obj.categories << category
end
Comme suit à la place? ...
obj.categories << raw_data.categories
Puis-je écrire ce qui suit ...
raw_data.categories.each do |category|
obj.categories << category
end
Comme suit à la place? ...
obj.categories << raw_data.categories
Jetez un œil sur Array#<<
et Array#push
.
Array#<<
prend un élément qui est ajouté à l'array donné. Par exemple:
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array << 'd' # => ["a", "b", "c", "d"]
cependant, si vous passez un array, vous serez surpris du résultat
irb> array << ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Array#push
peut gérer 1+ éléments, chacun étant ajouté à l'array.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array.push 'd' # => ["a", "b", "c", "d"]
Cependant, appeler #push
avec un array vous donne le même résultat que #<<
.
irb> array.push ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Pour ajouter tous les éléments de l'array, ajoutez simplement un *
avant le deuxième array.
irb> array.push *['e', 'f', 'g'] # => ["a", "b", "c", "d", "e", "f", "g"]
Sur une note connexe, bien que Array#+
concatène les arrays, il permet également des valeurs en double.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array += ['d'] # => ["a", "b", "c", "d"]
irb> array += ['d'] # => ["a", "b", "c", "d", "d"]
Si cela est indésirable, l'opérateur |
renverra une union de deux arrays, sans valeurs en double.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.