שיעורי מודול (1/2)
תנאים ולולאות
זרימת הבקרה ב-Rust סובבת סביב שני מבנים עיקריים: ביטויים מותנים כדי להחליט באיזה נתיב ביצוע לקחת, ובני לולאה כדי לחזור על הוראות.
תנאים: if כביטוי
ב-Rust, המשפט if הוא ביטוי, כלומר הוא מחזיר ערך. אנו יכולים להשתמש ב-if כדי להקצות ישירות ערך למשתנה:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionלולאות ואיטרציות
חלודה מספקת שלושה סוגים של לולאות מקוריות: loop, while וfor.
1. loop (לולאה אינסופית)
מילת המפתח loop יוצרת לולאה אינסופית שנמשכת עד שאתה אומר לה במפורש להפסיק להשתמש ב-break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}בנוסף, תוכל להחזיר ערך מ-loop על-ידי הצבתו מיד אחרי break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (לולאה מותנית)
מריץ גוש קוד כל עוד תנאי בוליאני נשאר נכון:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (איטרציה על גבי אוספים וטווחים)
לולאת for היא הכלי הנפוץ והבטוח ביותר לחזרה על אלמנטים באוסף או בטווח של מספרים:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}תוויות לולאה
כאשר עוסקים בלולאות מקוננות, הצהרות break וcontinue חלות על הלולאה הפנימית ביותר כברירת מחדל. חלודה מאפשרת לך להשתמש בתווית לולאה (נכתבת כ-'label_name:) כדי לסיים או להמשיך לולאה חיצונית במפורש:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}נסה זאת בעצמך
הכריז על משתנה בשם מספר עם ערך של 7. לאחר מכן, השתמש בביטוי if/else כדי להקצות את הערך 'גדול' להודעת המשתנה אם המספר גדול מ-5, או 'קטן' אחרת. לבסוף, הדפס הודעה באמצעות println!.
הצג רמז
כתוב `תן הודעה = אם מספר > 5 { 'גדול' } else { 'קטן' };` והעביר אותו אל `println!`.
הפתרון זמין לאחר 3 ניסיונות
כתוב לולאת for שמדפיסה את המספרים מ-1 עד 5 כולל (כלומר 1, 2, 3, 4, 5) באמצעות println! בכל איטרציה.
הצג רמז
השתמש בתחביר הטווח הכולל `for i in 1..=5` והפעל `println!('{}', i);` בתוך הבלוק.
הפתרון זמין לאחר 3 ניסיונות
כתוב לולאה שמגדילה מונה משתנה שניתן לשינוי החל מ-0. כאשר המונה מגיע ל-10, צא מהמונה המחזיר הלולאה כפול 5 באמצעות הצהרת break כדי להקצות ערך זה לתוצאת משתנה בלתי ניתנת לשינוי. לבסוף, הדפס את התוצאה.
הצג רמז
השתמש ב-'let result = loop { ... };'. בתוך הלולאה הגדל 'מונה' והוסף את התנאי 'if counter == 10 { break counter * 5; }`.
הפתרון זמין לאחר 3 ניסיונות