Cum se creează o matrice multidimensională în Ruby

Cum se creează o matrice multidimensională în Ruby. Deși Ruby nu oferă suport explicit pentru tablourile multidimensionale, puteți implementa unul singur dacă aveți cunoștințe de bază despre limbaj. În esență, trebuie să creați o „matrice de matrice” în care fiecare element al matricei conține încă o matrice. Pentru a crea o astfel de matrice multidimensională în Ruby, puteți scrie o metodă folosită pentru a genera matricele de matrice, astfel încât codul să nu fie repetat.

Creați o matrice multidimensională în Ruby

Pasul 1

Scrieți scheletul metodei. Această metodă va lua un număr de argumente de dimensiune și va returna o matrice multidimensională goală a acelor dimensiuni. De exemplu, pentru o matrice de 10x10, apelați această metodă mda (10,10):def mda (lățime, înălțime) end

Videoclipul zilei

Pasul 2

Creați o serie de elemente de lățime.

Pasul 3

Creați o matrice de elemente de înălțime pentru fiecare element din matrice. Aceasta face „matricea de matrice” care va fi folosită ca o matrice bidimensională. Pentru a crea matrice goale de o anumită lungime, utilizați constructorul Array.new cu lungimea ca argument. Inițial, toate valorile din matrice vor fi zero.

Pasul 4

Folosește harta! metoda de asemenea. Harta! metoda iterează fiecare element dintr-o matrice, rulează un bloc pentru fiecare și atribuie rezultatul blocului elementului de matrice. Același rezultat poate fi obținut folosind o buclă for, dar harta! metoda este mai concisă: def mda (lățime, înălțime) a = Array.new (lățime) a.map! { Array.new (height) }return aend

Pasul 5

Utilizați această matrice cu operatorul indice (paranteze pătrate []). De exemplu, dacă ați avea o matrice de 10x10 numită „a” și doriți elementul 7,3, ați spune a[7][3]: a = mda (10,10)# Completați matricea cu valuesa[7][5] = „un șir”a[2][9] = 23# Preluați valuesputs a[7][5]puts a[2][9]

Pasul 6

Profitați de capacitatea de a „înlănțui” apelurile de metodă în Ruby. De exemplu, metoda Array.new returnează o matrice. Puteți înlănțui un alt apel de metodă pentru a apela o metodă din matricea returnată. Deoarece înlănțuiți metodele și nu utilizați o instrucțiune return, nici nu aveți nevoie de numele variabilei: def mda (lățime, înălțime) Array.new (width).map!{ Array.new (height) }end

Bacsis

Ruby este foarte expresiv. Metoda MDA poate fi o singură linie de cod scurtă și concisă. Liniile suplimentare și cuvintele cheie fac codul să pară mai complicat decât este în realitate. Declarația de returnare nu este necesară în Ruby. Metodele și blocurile Ruby returnează automat rezultatul ultimei instrucțiuni executate în metodă sau bloc.