השאלה בתוך לולאה
חלק מהיחידה יסודות במסלול ה-Rust של Coddy. שיעור 67 מתוך 75.
ב-Rust, לכל ערך יש בעלים, וכשמשתמשים בערך בלולאה, Rust צריכה לדעת אם רוצים לשאול אותו (רק להתבונן בו באופן זמני) או לקחת עליו בעלות (לצרוך אותו).
זה חשוב, כי אם לולאה מקבלת בעלות על הנתונים שלך, לא תוכל עוד להשתמש בהם לאחר שהלולאה מסתיימת. הבנת ההבחנה הזאת היא המפתח לכתיבת לולאות נכונות ב-Rust.
לדוגמה, נבחן את הנתונים הבאים:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;שיטה 1: התבוננות בנתונים (באמצעות &):
for number in &numbers {
sum += number;
}
println!("I can use it here: {:?}", numbers);שיטה 2: לקיחת הנתונים (בלי &):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// זה יגרום לשגיאהחשבו על זה כך:
- שימוש ב־
&דומה לעיון באלבום תמונות: אפשר לראות את כל התמונות, אבל האלבום נשאר שלם - אי־שימוש ב־
&דומה להוצאת התמונות מהאלבום: אפשר להשתמש בהן, אבל האלבום יהיה ריק לאחר מכן
עכשיו הסגנון הזה:
for num in numbers.iter() {}דומה לזה:
for num in &numbers {}ולולאת מוטציה:
for num in numbers.iter_mut() {
*num *= 2;
}אפשר גם לכתוב זאת כך:
for num in &mut numbers {
*num *= 2;
}נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3תרגלו בעצמכם: קומפיילר Rust אונליין