Arrays combineren in Ruby

'Wat is de beste manier om te combineren arrays? "Deze vraag is nogal vaag en kan een paar verschillende dingen betekenen.

Aaneenschakeling

Aaneenschakeling is om het ene aan het andere toe te voegen. Bijvoorbeeld de arrays aaneenschakelen [1,2,3] en [4,5,6] zal je geven [1,2,3,4,5,6]. Dit kan op een aantal manieren in Robijn.

De eerste is de plus-operator. Dit zal er een toevoegen matrix tot het einde van een andere, het creëren van een derde array met de elementen van beide.

U kunt ook de gebruiken concat methode (de + operator en concat-methode zijn functioneel equivalent).

Als u veel van deze bewerkingen uitvoert, wilt u dit misschien vermijden. Objectcreatie is niet gratis en elk van deze bewerkingen creëert een derde array. Als u een array op zijn plaats wilt wijzigen en deze langer maakt met nieuwe elementen, kunt u de operator << gebruiken. Als je echter zoiets probeert, krijg je een onverwacht resultaat.

In plaats van het verwachte [1,2,3,4,5,6] array die we krijgen [1,2,3,[4,5,6]]

instagram viewer
. 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 niet of het kon schelen dat je probeerde een andere array aan de array toe te voegen. We kunnen er dus zelf overheen lopen.

Stel bewerkingen in

De wereld "combineren" kan ook worden gebruikt om de ingestelde bewerkingen te beschrijven. De basissetbewerkingen van kruising, samenvoeging en verschil zijn beschikbaar in Ruby. Onthoud dat "sets" een set objecten (of wiskunde, getallen) beschrijven die uniek zijn in die set. Bijvoorbeeld als u een vaste bewerking op de array zou uitvoeren [1,1,2,3] Ruby filtert die tweede 1 eruit, ook al staat 1 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 maken met de | operator. Dit is de "of" operator, als een element in de ene of de andere set zit, dan zit het 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 ingestelde bewerking is, geen lijstbewerking).

Het snijpunt van twee sets is een andere manier om twee sets te combineren. In plaats van een "of" operatie, is het snijpunt van twee sets een "en" operatie. De elementen van de resulterende set zijn die in beide sets. En omdat het een "en" operatie is, 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" door hun verschil te nemen. Het verschil tussen twee sets is de set van alle objecten in de eerste set niet in de tweede set. Zo [1,2,3] - [3,4,5] is [1,2].

Zippen

Ten slotte is er "zippen". Twee arrays kunnen aan elkaar worden geritst, waardoor ze op een vrij unieke manier worden gecombineerd. 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 in de eerste positie van beide arrays. Zippen is een beetje een vreemde operatie en je zult er misschien niet veel nut voor hebben. Het doel is om twee arrays te combineren waarvan de elementen nauw met elkaar correleren.

instagram story viewer