ביטוי 'if let'
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 4 מתוך 66.
לפעמים צריך לבדוק רק דפוס מסוים אחד, ולא אכפת לך מכל האפשרויות האחרות. כתיבת ביטוי match מלא עם זרוע משמעותית אחת בלבד וזרוע כללית שתופסת את כל השאר, _, עלולה להרגיש מסורבלת. Rust מספקת את if let כחלופה תמציתית יותר למצבים כאלה.
ביטוי ה-if let מאפשר לשלב התאמת תבניות עם לוגיקה מותנית במשפט אחד קריא. הנה התחביר הבסיסי:
if let pattern = value {
// קוד שירוץ אם pattern תואם
}לדוגמה, במקום לכתוב match עם זרוע שימושית אחת בלבד:
let number = 5;
match number {
5 => println!("Found five!"),
_ => (), // אל תעשה דבר עבור ערכים אחרים
}אפשר להשתמש ב-if let כדי להפוך את זה לנקי יותר:
let number = 5;
if let 5 = number {
println!("Found five!");
}ביטוי if let מבצע את בלוק הקוד רק כשהתבנית תואמת. אם היא לא תואמת, שום דבר לא קורה — אין צורך במקרה מפורש של "else" אלא אם רוצים להוסיף אותו.
אתגר
קלתקבל מספר כקלט. קרא את הקלט, המר אותו למספר שלם והשתמש בביטוי if let כדי לבדוק אם המספר הוא בדיוק 42. אם הוא תואם, הדפס "The answer!". אם הוא לא תואם, אל תדפיס דבר.
דרישות:
- השתמש בביטוי
if letכדי לבדוק אם המספר שווה ל־42 - אם המספר הוא
42, הדפס"The answer!" - אם המספר הוא כל דבר אחר, אל תדפיס דבר
קלט: מספר שלם יחיד
פלט: הדפס "The answer!" אם המספר הוא 42, אחרת אל תדפיס דבר
נסו בעצמכם
use std::io;
fn main() {
// קראו את הקלט
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let number: i32 = input.trim().parse().expect("Please enter a valid number");
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-if let כדי לבדוק אם number שווה ל-42
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין