Hoe maak je een multidimensionale array in Ruby

Hoe maak je een multidimensionale array in Ruby. Hoewel Ruby geen expliciete ondersteuning biedt voor multidimensionale arrays, kun je er zelf een implementeren als je een basiskennis van de taal hebt. Je moet in wezen een "array van arrays" maken waarin elk element van de array weer een andere array bevat. Om zo'n multidimensionale array in Ruby te maken, kun je een methode schrijven die wordt gebruikt om de arrays van arrays te genereren, zodat de code niet hoeft te worden herhaald.

Creëer een multidimensionale array in Ruby

Stap 1

Schrijf het skelet van de methode. Deze methode neemt een aantal dimensieargumenten en retourneert een lege multidimensionale array van die dimensies. Voor een array van 10x10 noem je deze methode bijvoorbeeld mda (10,10):def mda (breedte, hoogte) end

Video van de dag

Stap 2

Maak een array van breedte-elementen.

Stap 3

Maak een array van hoogte-elementen voor elk element in de array. Dit maakt de "array of arrays" die zal worden gebruikt als een tweedimensionale array. Om lege arrays met een bepaalde lengte te maken, gebruikt u de constructor Array.new met de lengte als argument. Aanvankelijk zijn alle waarden in de array nul.

Stap 4

Gebruik de kaart! methode ook. De kaart! methode itereert elk element in een array, voert voor elk een blok uit en wijst het resultaat van het blok toe aan het array-element. Hetzelfde resultaat kan worden bereikt met een for-lus, maar de kaart! methode is beknopter: def mda (breedte, hoogte) a = Array.new (breedte) a.map! { Array.new (hoogte) }return aend

Stap 5

Gebruik deze array met de subscript-operator (vierkante haken []). Bijvoorbeeld, als je een 10x10 array had met de naam "a" en je wilde het 7,3 element, dan zou je zeggen a[7][3]: a = mda (10,10)# Vul de array met waardena[7][5] = "a string"a[2][9] = 23# Haal waarden opput a[7][5]puts a[2][9]

Stap 6

Profiteer van de mogelijkheid om methodeaanroepen in Ruby te "ketenen". De methode Array.new retourneert bijvoorbeeld een array. U kunt daaraan een andere methodeaanroep koppelen om een ​​methode op de geretourneerde array aan te roepen. Omdat je de methoden aan een ketting koppelt en geen return-statement gebruikt, heb je de naam van de variabele ook niet nodig: def mda (width, height) Array.new (width).map!{ Array.new (height) }end

Tip

Ruby is zeer expressief. De MDA-methode kan een korte en beknopte enkele regel code zijn. Extra regels en trefwoorden laten code er alleen maar ingewikkelder uitzien dan het in werkelijkheid is. De return-instructie is niet nodig in Ruby. Ruby-methoden en -blokken retourneren automatisch het resultaat van de laatste instructie die in de methode of het blok is uitgevoerd.