"Was ist der beste Weg zu kombinieren Arrays? "Diese Frage ist ziemlich vage und kann ein paar verschiedene Dinge bedeuten.
Verkettung
Verkettung besteht darin, eine Sache an eine andere anzuhängen. Zum Beispiel Verketten der Arrays [1,2,3] und [4,5,6] werde dir geben [1,2,3,4,5,6]. Dies kann auf verschiedene Arten geschehen Rubin.
Der erste ist der Plus-Operator. Dies wird einen anhängen Array bis zum Ende eines anderen, Erstellen eines dritten Arrays mit den Elementen von beiden.
Alternativ können Sie die concat Methode (der Operator + und die Methode concat sind funktional äquivalent).
Wenn Sie viele dieser Vorgänge ausführen, möchten Sie dies möglicherweise vermeiden. Objekterstellung ist nicht frei und jede dieser Operationen erstellt ein drittes Array. Wenn Sie ein Array an Ort und Stelle ändern möchten, um es mit neuen Elementen zu verlängern, können Sie den Operator << verwenden. Wenn Sie jedoch so etwas versuchen, erhalten Sie ein unerwartetes Ergebnis.
Anstelle des erwarteten [1,2,3,4,5,6]
Array bekommen wir [1,2,3,[4,5,6]]. Dies ist sinnvoll. Der Append-Operator nimmt das Objekt, das Sie ihm geben, und hängt es an das Ende des Arrays an. Es war nicht bekannt oder egal, dass Sie versucht haben, ein anderes Array an das Array anzuhängen. So können wir es selbst durchlaufen.Operationen einstellen
Der Weltkombinat kann auch verwendet werden, um die eingestellten Operationen zu beschreiben. Die grundlegenden Mengenoperationen für Schnittmenge, Vereinigung und Differenz sind in Ruby verfügbar. Denken Sie daran, dass "Mengen" eine Menge von Objekten (oder in der Mathematik Zahlen) beschreiben, die in dieser Menge eindeutig sind. Zum Beispiel, wenn Sie eine Set-Operation für das Array ausführen [1,1,2,3] Ruby filtert diese zweite 1 heraus, obwohl 1 möglicherweise in der resultierenden Menge enthalten ist. Beachten Sie also, dass sich diese Set-Operationen von Listenoperationen unterscheiden. Sets und Listen sind grundsätzlich verschiedene Dinge.
Sie können die Vereinigung zweier Sätze mit der | Operator. Dies ist der Operator "oder". Wenn sich ein Element in der einen oder der anderen Menge befindet, befindet es sich in der resultierenden Menge. Also das Ergebnis von [1,2,3] | [3,4,5] ist [1,2,3,4,5] (Denken Sie daran, dass dies, obwohl es zwei Dreien gibt, eine festgelegte Operation ist, keine Listenoperation).
Der Schnittpunkt zweier Mengen ist eine weitere Möglichkeit, zwei Mengen zu kombinieren. Anstelle einer "oder" -Operation ist der Schnittpunkt zweier Mengen eine "und" -Operation. Die Elemente der resultierenden Menge sind die in beide setzt. Und als "und" -Operation verwenden wir den Operator &. Also das Ergebnis von [1,2,3] & [3,4,5] ist einfach [3].
Schließlich besteht eine andere Möglichkeit, zwei Sätze zu "kombinieren", darin, ihren Unterschied zu nehmen. Der Unterschied zwischen zwei Mengen ist die Menge aller Objekte in der ersten Menge nicht im zweiten Satz. So [1,2,3] - [3,4,5] ist [1,2].
Reißverschluss
Schließlich gibt es "Reißverschluss". Zwei Arrays können komprimiert werden, indem sie auf einzigartige Weise kombiniert werden. Es ist am besten, es zuerst zu zeigen und danach zu erklären. Das Ergebnis von [1,2,3] .zip ([3,4,5]) ist [ [1,3], [2,4], [3,5] ]. Was ist hier passiert? Die beiden Arrays wurden kombiniert, wobei das erste Element eine Liste aller Elemente an der ersten Position beider Arrays ist. Das Zippen ist eine seltsame Operation, für die Sie möglicherweise nicht viel Verwendung finden. Sein Zweck ist es, zwei Arrays zu kombinieren, deren Elemente eng miteinander korrelieren.