עוד עובדה שסביר להניח שלא יצא או ייצא לכם להיתקל בה לגבי מערכים, היא מה קורה כשעובדים על מערך רב מימדי שהוא Jagged.
למשל, נניח שיש לנו מתודה נחמדה כזאת:
|
|
אפשר לקרוא לה ככה:
|
|
היינו מצפים שגם יתקיים שאפשר לקרוא לה כך:
|
|
למה בעצם? כי יש לנו מערך דו מימדי של מערכים חד מימדיים. הלא כך?
מסתבר שהקוד הנ"ל לא מתקמפל. באופן מפתיע הקוד הבא דווקא כן מתקמפל:
|
|
מה בעצם קורה כאן? יכול להיות שזה נראה ממש מוזר, אבל בואו ננסה לאתחל מערך כזה:
|
|
כאמור, זה מערך דו מימדי של מערכים חד מימדיים. כלומר, מטריצה של מערכים חד-מימדיים. איך היינו מצפים לגשת אליה?
ככה:
|
|
ניגשים לאיבר במטריצה ואז ניגשים לאיבר במערך. לכן עד כמה שמבלבלת הכתיבה של הטיפוס, דווקא יש לה היגיון, מאחר והיא זהה לשימוש בIndexer.
בכל אופן, מאוד לא הייתי רוצה להיתקל בקוד כזה. כמו בפעמים הקודמות שדיברתי על דברים אקזוטיים של מערכים, מדובר במשהו שהוא לא סטנדרטי ולא כל כך קריא.
אבל כשכותבים רכיבים גנריים מסוימים, לפעמים נתקלים בטיפוסים מוזרים כאלה.
המשך יום תכלת טוב.