ביטוי 'match'
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 1 מתוך 66.
ביטוי ה-match הוא כלי רב-עוצמה של Rust להתאמת תבניות, שמאפשר לך להשוות ערך לתבניות שונות ולהריץ קוד בהתאם לתבנית שתואמת. אפשר לחשוב עליו כעל גרסה מתקדמת יותר של משפטי if, שיכולה לטפל באלגנטיות במספר תנאים.
הנה התחביר הבסיסי של ביטוי match:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}כל שורה בתוך match נקראת "זרוע". => מפריד בין התבנית לבין הקוד שרץ כשהתבנית הזאת מתאימה. הקו התחתון _ הוא תבנית מיוחדת של תו כללי שמתאימה לכל דבר — היא כמו "תבנית שתופסת הכול" עבור כל ערך שלא מתאים לתבניות האחרות.
הנה דוגמה פשוטה שבודקת מספר:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}ב-Rust, ביטויי match חייבים להיות ממצים, כלומר עליהם לטפל בכל הערכים האפשריים. לכן התו הכללי _ חשוב כל כך — הוא מבטיח שכיסית את כל המקרים שלא הותאמה להם התאמה מפורשת.
אתגר
קלכתבו פונקציה describe_number שמקבלת את num ומחזירה תיאור כמחרוזת בהתאם לערך המספר.
השתמשו בביטוי match כדי להחזיר תיאורים שונים עבור מספרים שונים.
תנאים:
- אם
numהוא0, החזירו"zero" - אם
numהוא1, החזירו"one" - אם
numהוא2, החזירו"two" - אם
numהוא3, החזירו"three" - עבור כל מספר אחר, החזירו
"many"
פרמטרים:
num(i32): המספר לתיאור
ערך מוחזר: תיאור של המספר כמחרוזת (String)
נסו בעצמכם
fn describe_number(num: i32) -> String {
// כתבו כאן קוד
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין