השאלה בתוך לולאה
חלק מהיחידה יסודות במסלול ה-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 {}ולולאת שינוי, שצריכה שהווקטור יוכרז עם mut:
let mut numbers = vec![1, 2, 3, 4, 5];
for num in numbers.iter_mut() {
*num *= 2;
}אפשר לכתוב גם כך:
for num in &mut numbers {
*num *= 2;
}נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3תרגלו בעצמכם: קומפיילר Rust אונליין