"Koji je najbolji način kombiniranja nizovi? "Ovo je pitanje prilično nejasno i može značiti nekoliko različitih stvari.
povezan u lanac
Spajanje je dodavanje jedne stvari drugoj. Na primjer, spajanje nizova [1,2,3] i [4,5,6] dat će vam [1,2,3,4,5,6]. To se može učiniti na nekoliko načina Rubin.
Prvi je plus operator. Ovo će dodati jedan red do kraja drugog, stvarajući treći niz s elementima oba.
Alternativno, koristite tipku CONCAT metoda (metoda + operator i concat funkcionalno su ekvivalentne).
Ako radite puno ovih operacija, možda biste to željeli izbjeći. Izrada objekta nije besplatan, a svaka od tih operacija stvara treći niz. Ako želite izmijeniti niz na mjestu, produžujući nove elemente, možete koristiti << operatora. Međutim, ako pokušate nešto takvo, dobit ćete neočekivani rezultat.
Umjesto očekivanog [1,2,3,4,5,6] niz smo dobili [1,2,3,[4,5,6]]. Ovo ima smisla, operator dodavanja uzima objekt koji mu dajete i dodaje ga na kraju matrice. Nije vam bilo jasno ili nije briga jeste li pokušali dodati drugi niz u polje. Tako možemo i sami prevariti petlju.
Postavite operacije
Svjetski "kombajn" se također može koristiti za opisivanje zadatih operacija. Osnovne operacije operacija sjecišta, spoja i razlike dostupne su u Rubyju. Zapamtite da "setovi" opisuju skup predmeta (ili u matematici, brojeve) koji su jedinstveni u tom skupu. Na primjer, ako ste trebali napraviti operaciju postavljanja na polju [1,1,2,3] Ruby će filtrirati tu drugu 1, iako 1 može biti u dobivenom setu. Stoga imajte na umu da su ove skupne operacije različite od operacija popisa. Skupine i popisi su bitno različite stvari.
Možete spojiti dva skupa pomoću | operater. To je operator "ili", ako je element u jednom ili drugom skupu, to je u rezultirajućem skupu. Dakle, rezultat [1,2,3] | [3,4,5] je [1,2,3,4,5] (zapamtite da iako postoje dvije trojke, ovo je skupna operacija, a ne popisna operacija).
Sjecište dva skupa još je jedan način kombiniranja dva skupa. Umjesto operacije "ili", sjecište dvaju skupa je operacija "i". Elementi rezultirajućeg skupa su oni u oba setovi. I, kao operacija "i", koristimo & operator. Dakle, rezultat [1,2,3] & [3,4,5] jednostavno je [3].
Konačno, još jedan način da se "kombiniraju" dva seta je da se njihova razlika. Razlika dva skupa je skup svih objekata u prvom skupu koji je ne u drugom setu. Tako [1,2,3] - [3,4,5] je [1,2].
Komprimiranje
Napokon, dolazi do "zatvarača". Dva niza mogu se komprimirati kombinirajući ih na prilično jedinstven način. Najbolje je samo to prvo pokazati, a poslije objasniti. Rezultat [1,2,3] zip ([3,4,5]) je [ [1,3], [2,4], [3,5] ]. Pa što se ovdje dogodilo? Dva niza su kombinirana, pri čemu je prvi element popis svih elemenata u prvom položaju oba niza. Zipanje je pomalo čudna operacija i možda mu nećete naći puno koristi. Njegova je svrha kombinirati dva niza čiji su elementi usko povezani.