"Wat is de beste manier om arrays te combineren?" Deze vraag is vrij vaag en kan een paar verschillende dingen betekenen.
Aaneenschakeling is om het een aan het ander toe te voegen. Bijvoorbeeld het samenvoegen van de arrays [1,2,3] en [4,5,6] zal je geven [1,2,3,4,5,6]. Dit kan op een paar manieren in Ruby worden gedaan.
De eerste is de plus-operator. Hiermee wordt de ene array aan het einde van een andere toegevoegd, waardoor een derde array met de elementen van beide wordt gemaakt.
U kunt ook de concat methode (de + operator en concat methode zijn functioneel equivalent).
Als u veel van deze bewerkingen uitvoert, wilt u dit misschien vermijden. Het maken van objecten is niet gratis en elk van deze bewerkingen maakt een derde array. Als u een array op zijn plaats wilt wijzigen, waardoor deze langer wordt met nieuwe elementen, kunt u de gebruiken << operator. However, if you try something like this, you'll get an unexpected result.
In plaats van het verwachte [1,2,3,4,5,6] reeks die we krijgen [1,2,3, [4,5,6]]. Dit is logisch, de append-operator neemt het object dat u het geeft en voegt het toe aan het einde van de array. Het wist of kon het niet schelen dat je probeerde een andere array aan de array toe te voegen. Dus we kunnen er zelf overheen lopen.
De wereld "combineren" kan ook worden gebruikt om de ingestelde bewerkingen te beschrijven. De basissetbewerkingen snijpunt, unie en verschil zijn beschikbaar in Ruby. Onthoud dat "sets" een set objecten (of wiskunde, getallen) beschrijven die uniek zijn in die set. Als u bijvoorbeeld een setbewerking op de array zou uitvoeren [1,1,2,3] Ruby filtert die tweede 1 eruit, ook al bevindt 1 zich in de resulterende set. Houd er dus rekening mee dat deze ingestelde bewerkingen anders zijn dan lijstbewerkingen. Sets en lijsten zijn fundamenteel verschillende dingen.
U kunt de combinatie van twee sets met behulp van de | operator. Dit is de "of" -operator, als een element zich in de ene set of de andere bevindt, bevindt het zich in de resulterende set. Dus het resultaat van [1,2,3] | [3,4,5] is [1,2,3,4,5] (onthoud dat, hoewel er twee drieën zijn, dit een vaste bewerking is, geen lijstbewerking).
Het snijpunt van twee sets is een andere manier om twee sets te combineren. In plaats van een "of" bewerking is het snijpunt van twee sets een "en" bewerking. De elementen van de resulterende set zijn die in beide sets. En omdat we een "en" -bewerking zijn, gebruiken we de operator &. Dus het resultaat van [1,2,3] & [3,4,5] is eenvoudig [3].
Ten slotte is een andere manier om twee sets te "combineren" hun verschil te nemen. Het verschil van twee sets is de set van alle objecten in de eerste set die is niet in de tweede set. Zo [1,2,3] - [3,4,5] is [1,2].
Eindelijk is er "zippen". Twee arrays kunnen aan elkaar worden geritst en combineren ze op een vrij unieke manier. Het is het beste om het eerst te laten zien en daarna uit te leggen. Het resultaat van [1,2,3] .zip ([3,4,5]) is [[1,3], [2,4], [3,5]]. Dus wat is hier gebeurd? De twee arrays werden gecombineerd, waarbij het eerste element een lijst was van alle elementen op de eerste positie van beide arrays. Zippen is een beetje een vreemde operatie en je zult er misschien niet veel aan hebben. Het doel is om twee arrays te combineren waarvan de elementen nauw samenhangen.