Menu
Coddy logo textTech

מעבר ניתן לשינוי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 12 מתוך 66.

לפעמים צריך לעשות יותר מאשר רק לקרוא את איברי המערך — צריך לשנות אותם. בעוד שהשיעור הקודם הראה איך לעבור על הערכים ולקרוא אותם, השיעור הזה מלמד איך לשנות את האיברים במהלך המעבר עליהם באמצעות הפניות הניתנות לשינוי.

כדי לשנות איברים במהלך איטרציה, עליך להשתמש ב־&mut במקום ב־& בלולאת for שלך:

let mut numbers = vec![1, 2, 3, 4];

for number in &mut numbers {
    *number = *number * 2;
}

‏&mut numbers יוצר הפניה ניתנת לשינוי לווקטור, ובכל איטרציה מתקבלת הפניה ניתנת לשינוי לאיבר מסוים. האופרטור * (שנקרא אופרטור ביטול הפניה) משמש לגישה לערך עצמו שאליו ההפניה מצביעה ולשינוי שלו.

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

אחרי הלולאה שלמעלה, numbers יכיל את [2, 4, 6, 8] — כל ערך מקורי הוכפל במקומו.

challenge icon

אתגר

קל
כתבו פונקציה add_ten_to_all שמקבלת וקטור ניתן לשינוי numbers ומוסיפה 10 לכל איבר במקומו, ואז מחזירה את הווקטור ששונה.

השתמשו באיטרציה ניתנת לשינוי עם &mut כדי לשנות כל איבר ישירות. זכרו להשתמש באופרטור ביטול ההפניה * כדי לגשת לערכים עצמם ולשנות אותם.

פרמטרים:

  • numbers (Vec<i32>): וקטור ניתן לשינוי של מספרים שלמים שיש לשנות

ערך מוחזר: הווקטור ששונה, עם תוספת של 10 לכל איבר (Vec<i32>)

נסו בעצמכם

fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<i32> {
    // כתבו כאן קוד
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Rust אונליין