לולאות כביטויים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 5 מתוך 66.
ברוב שפות התכנות, לולאות הן פקודות שמבצעות קוד שוב ושוב. אבל ל-Rust יש תכונה ייחודית: לולאות יכולות להיות גם ביטויים שמחזירים ערך. פירוש הדבר הוא שאפשר לשייך את התוצאה של לולאה למשתנה.
כדי להחזיר ערך מתוך לולאה, משתמשים ב־break ואחריו הערך שרוצים להחזיר:
let result = loop {
// בדיקה של תנאי כלשהו
if condition_met {
break 42; // צא מהלולאה והחזר 42
}
};הנה דוגמה מעשית שמוצאת את המספר הזוגי הראשון החל מ־10:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // החזר את המספר הזוגי
}
counter += 1;
};
println!("First even number: {}", first_even);הלולאה ממשיכה עד שהיא מוצאת מספר זוגי, ואז משתמשת ב־break counter כדי לצאת מהלולאה ולהחזיר את המספר הזה. הערך המוחזר מוקצה ל־first_even.
אתגר
קלתקבל מספר התחלתי כקלט. קרא את הקלט, המר אותו למספר שלם והשתמש בלולאה כביטוי כדי למצוא את המספר הראשון שמתחלק ב־7, החל מהמספר הזה.
דרישות:
- השתמש בביטוי
loopשמחזיר ערך - התחל לבדוק מהמספר שהתקבל כקלט
- מצא את המספר הראשון שמתחלק ב־7 (השארית בחלוקה ב־7 היא 0)
- השתמש ב־
breakכדי להחזיר את המספר שנמצא מהלולאה - הדפס את התוצאה
קלט: מספר שלם יחיד שמייצג את המספר ההתחלתי
פלט: הדפס את המספר הראשון שמתחלק ב־7, החל מהמספר שהתקבל כקלט
נסו בעצמכם
use std::io;
fn main() {
// קראו את הקלט
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let start_number: i32 = input.trim().parse().expect("Invalid input");
// TODO: כתבו את הקוד שלכם למטה
// השתמשו בביטוי לולאה כדי למצוא את המספר הראשון שמתחלק ב-7
// הדפיסו את התוצאה
// println!("{}", result);
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין