התאמה לטווחים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 3 מתוך 66.
כשצריך לבדוק אם ערך נמצא בטווח מסוים של מספרים, יהיה מייגע לכתוב זרוע נפרדת לכל ערך בנפרד. ביטוי ה-match של Rust תומך בתבניות טווח, שמאפשרות להתאים לטווח רציף של ערכים באמצעות התחביר start..=end.
האופרטור ..= יוצר טווח כולל, כלומר ערכי ההתחלה והסיום נכללים שניהם בהתאמה. כך אפשר להשתמש בטווחים בזרועות match:
let temp = 22;
match temp {
..=0 => println!("Freezing"),
1..=15 => println!("Cold"),
_ => println!("Warm"),
}בדוגמה הזאת, טמפרטורה של 22 לא תתאים לשני הטווחים הראשונים, ולכן תמשיך לזרוע ברירת המחדל ותדפיס "Warm". הטווח 1..=15 כולל גם את 1 וגם את 15, ולכן כל טמפרטורה מ-1 עד 15 תדפיס "Cold".
אתגר
קלתקבלו גיל כקלט. קראו את הקלט, המירו אותו למספר שלם והשתמשו בביטוי match עם תבניות טווח כדי להדפיס את קטגוריית הגיל המתאימה.
דרישות:
- אם הגיל הוא
0..=12, הדפיסו"Child" - אם הגיל הוא
13..=19, הדפיסו"Teenager" - אם הגיל הוא
20..=64, הדפיסו"Adult" - אם הגיל הוא
65..=120, הדפיסו"Senior" - לכל גיל אחר, הדפיסו
"Invalid age"
קלט: מספר שלם יחיד המייצג את הגיל
פלט: הדפיסו את קטגוריית הגיל: "Child", "Teenager", "Adult", "Senior" או "Invalid age"
נסו בעצמכם
use std::io;
fn main() {
// קראו את הקלט
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let age: i32 = input.trim().parse().expect("Please enter a valid number");
// TODO: כתבו את הקוד שלכם למטה באמצעות ביטוי match עם תבניות טווח
// הדפיסו את התוצאה
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין