מעבר ניתן לשינוי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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] — כל ערך מקורי הוכפל במקומו.
אתגר
קלכתבו פונקציה add_ten_to_all שמקבלת וקטור ניתן לשינוי numbers ומוסיפה 10 לכל איבר במקומו, ואז מחזירה את הווקטור ששונה.
השתמשו באיטרציה ניתנת לשינוי עם &mut כדי לשנות כל איבר ישירות. זכרו להשתמש באופרטור ביטול ההפניה * כדי לגשת לערכים עצמם ולשנות אותם.
פרמטרים:
numbers(Vec<i32>): וקטור ניתן לשינוי של מספרים שלמים שיש לשנות
ערך מוחזר: הווקטור ששונה, עם תוספת של 10 לכל איבר (Vec<i32>)
נסו בעצמכם
fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<i32> {
// כתבו כאן קוד
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מיליםתרגלו בעצמכם: קומפיילר Rust אונליין