Hoewel Ruby biedt geen expliciete steun voor multidimensionale arrays , kunt u er zelf een te voeren als u een basiskennis van de taal . Moet in wezen maak een " matrix van matrices " waarin elk element van de array bevat nog andere array . Om zo'n multidimensionale array in Ruby te maken , kunt u een methode die wordt gebruikt om de arrays van arrays te genereren , zodat de code niet hoeft te worden herhaald schrijven . Instructies Maak een multidimensionale array in Ruby 1 Schrijf het skelet van de methode . Deze methode zal een aantal dimensie argumenten en zendt een lege multidimensionale array van die dimensies . Bijvoorbeeld , voor een 10x10 matrix , noemen deze methode mda (10,10 ) : . Def mda ( breedte, hoogte ) end kopen van 2 Maak een array van breedte elementen < br > 3 een reeks hoogte elementen voor elk element in de array. Dit maakt de " matrix van matrices " die wordt gebruikt als een tweedimensionale matrix . Om lege arrays van een bepaalde lengte te maken , gebruikt u de Array.new constructeur met de lengte als argument . In eerste instantie worden alle waarden in de matrix zijn nihil . 4 Gebruik de kaart ! methode ook. De kaart! Werkwijze herhaalt elk element in een array , loopt een blok voor elk en wijst het resultaat van het blok aan de array element . Hetzelfde resultaat kan worden bereikt met een lus , maar de kaart! methode is beknopter : def mda ( breedte, hoogte ) a = Array.new ( breedte) a.map ! { Array.new (hoogte ) } terug aend 5 Gebruik deze array met het onderschrift ( vierkante haakjes [ ] ) operator . Bijvoorbeeld , als je een 10x10 array met de naam " a " en wilde de 7,3 -element , zou je zeggen een [ 7 ] [ 3 ] : a = mda (10,10 ) # Vul de array met valuesa [ 7 ] [ ,"5 ] = " a string" a [ 2 ] [ 9 ] = 23 # ophalen valuesputs een [ 7 ] [ 5 ] legt een [ 2 ] [ 9 ] 6 Maak gebruik van de mogelijkheid om " chain " -methode noemt in Ruby . Bijvoorbeeld , de werkwijze Array.new een matrix . U kunt chain andere methode gesprek op dat een methode aan te roepen op de geretourneerde array . Omdat je het koppelen van de methoden , en niet met behulp van een return statement , hoeft u niet de naam van de variabele moet ofwel : def mda ( breedte, hoogte ) Array.new ( breedte ) kaart { Array.new (hoogte ) } einde . !
|