Réponses
Trop de publicités?Vous avez une idée réalisable, mais l' #flatten!
est au mauvais endroit -- il aplatit son récepteur, de sorte que vous pouvez l'utiliser pour tourner [1, 2, ['foo', 'bar']]
en [1,2,'foo','bar']
.
Je suis sans doute oublié quelques approches, mais vous pouvez concaténer:
a1.concat a2
a1 + a2 # creates a new array, as does a1 += a2
ou ajouter/ajouter:
a1.push(*a2) # note the asterisk
a2.unshift(*a1) # note the asterisk, and that a2 is the receiver
ou d'épissure:
a1[a1.length, 0] = a2
a1[a1.length..0] = a2
a1.insert(a1.length, *a2)
ou ajouter et aplatir:
(a1 << a2).flatten! # a call to #flatten instead would return a new array
Vous pouvez utiliser l’opérateur + !
Vous pouvez lire tout la classe array ici : http://ruby-doc.org/core/classes/Array.html
Le plus propre de l'approche est d'utiliser le Tableau#concat méthode; il ne va pas créer un nouveau tableau (à la différence du Tableau#+ qui fera la même chose, mais de créer un nouveau tableau).
Directement à partir de la documentation (http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-concat):
concat(other_ary)
Ajoute les éléments de other_ary de soi.
Donc
[1,2].concat([3,4]) #=> [1,2,3,4]
Tableau#concat n'aplatit pas un tableau multidimensionnel si il est passé en argument. Vous aurez besoin de gérer séparément:
arr= [3,[4,5]]
arr= arr.flatten #=> [3,4,5]
[1,2].concat(arr) #=> [1,2,3,4,5]
Enfin, vous pouvez utiliser notre corelib gem (https://github.com/corlewsolutions/corelib) qui ajoute utiles les aides à la Ruby classes de base. En particulier, nous avons un Tableau#add_all méthode qui sera automatiquement aplatir les tableaux multidimensionnels avant l'exécution de la méthode concat.
Essayez ceci, il regroupera vos baies en éliminant les doublons
http://www.ruby-doc.org/core/classes/Array.html
Davantage de documentation coup d’oeil à « Union Set »