כיצד ליצור מערך רב מימדי ברובי

כיצד ליצור מערך רב מימדי ברובי. למרות שרובי אינו מספק תמיכה מפורשת עבור מערכים רב מימדיים, אתה יכול ליישם אחד בעצמך אם יש לך ידע בסיסי בשפה. אתה חייב בעצם ליצור "מערך של מערכים" שבו כל אלמנט של המערך מכיל מערך נוסף. כדי ליצור מערך רב מימדי כזה ברובי, ניתן לכתוב שיטה המשמשת ליצירת מערכי המערכים כך שהקוד לא יצטרך לחזור על עצמו.

צור מערך רב מימדי ברובי

שלב 1

כתבו את השלד של השיטה. שיטה זו תיקח מספר ארגומנטים של מימד ותחזיר מערך רב-ממדי ריק של ממדים אלו. לדוגמה, עבור מערך 10x10, קרא לשיטה זו mda (10,10):def mda (רוחב, גובה) end

סרטון היום

שלב 2

צור מערך של רכיבי רוחב.

שלב 3

צור מערך של רכיבי גובה עבור כל אלמנט במערך. זה הופך את "מערך המערכים" שישמש כמערך דו מימדי. כדי ליצור מערכים ריקים באורך מסוים, השתמש בבנאי Array.new עם האורך כארגומנט. בתחילה, כל הערכים במערך יהיו אפסיים.

שלב 4

השתמש במפה! גם בשיטה. המפה! השיטה חוזרת על כל אלמנט במערך, מריץ בלוק עבור כל אחד ומקצה את תוצאת הבלוק לאלמנט המערך. ניתן להשיג את אותה תוצאה באמצעות לולאת for, אבל המפה! השיטה תמציתית יותר: def mda (רוחב, גובה) a = Array.new (width) a.map! { Array.new (height) }retur aend

שלב 5

השתמש במערך זה עם האופרטור המשנה (סוגריים מרובעים []). לדוגמה, אם היה לך מערך 10x10 שנקרא "a" ואתה רוצה את האלמנט 7,3, היית אומר a[7][3]: a = mda (10,10)# מלא את המערך ב-valuesa[7][5] = "מחרוזת"a[2][9] = 23# אחזר ערכי ערכים a[7][5]מכניס a[2][9]

שלב 6

נצלו את היכולת "לשרשר" קריאות בשיטה ברובי. לדוגמה, השיטה Array.new מחזירה מערך. אתה יכול לשרשר קריאה לשיטה אחרת לזה כדי לקרוא למתודה במערך המוחזר. מכיוון שאתה משרשר את השיטות, ולא משתמש בהצהרת return, אתה גם לא צריך את שם המשתנה: def mda (width, height) Array.new (width).map!{ Array.new (height) }end

עֵצָה

רובי מאוד אקספרסיבי. שיטת MDA יכולה להיות שורת קוד אחת קצרה ותמציתית. שורות ומילות מפתח נוספות רק גורמות לקוד להיראות מסובך יותר ממה שהוא באמת. הצהרת ההחזרה אינה הכרחית ברובי. שיטות ובלוקים של רובי מחזירות אוטומטית את התוצאה של ההצהרה האחרונה שבוצעה בשיטה או בבלוק.