is_some() ו-is_none()
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 37 מתוך 66.
לפעמים צריך לבדוק אם Option מכיל ערך בלי לחלץ את הערך עצמו. Rust מספקת שתי שיטות נוחות לכך: .is_some() ו-.is_none().
שתי השיטות מחזירות ערך בוליאני, ולכן הן מתאימות במיוחד לשימוש בתנאי if:
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}
if maybe_score.is_none() {
println!("No score available");
}המתודה .is_some() מחזירה true אם ה־Option מכיל ערך Some, ו־false אם הוא None. המתודה .is_none() פועלת באופן הפוך — היא מחזירה true עבור None ו־false עבור Some.
אתגר
קלתקבלו מספר כקלט. צרו Option<i32> שמכיל Some(number) אם המספר חיובי, או None אם המספר הוא אפס או שלילי. השתמשו ב-.is_some() וב-.is_none() כדי לבדוק את ה-Option ולהדפיס את ההודעה המתאימה.
דרישות:
- קראו את הקלט והמירו אותו ל-
i32 - צרו משתנה
Option<i32>:- אם המספר חיובי (גדול מ-0), השימו בו
Some(number) - אם המספר הוא אפס או שלילי, השימו בו
None
- אם המספר חיובי (גדול מ-0), השימו בו
- השתמשו ב-
.is_some()כדי לבדוק אם ה-Optionמכיל ערך - אם
.is_some()מחזירtrue, הדפיסו:Positive number detected - השתמשו ב-
.is_none()כדי לבדוק אם ה-Optionריק - אם
.is_none()מחזירtrue, הדפיסו:No positive number
קלט:
- מספר שלם יחיד (למשל,
42,0או-5)
פלט:
- אם המספר חיובי:
Positive number detected - אם המספר הוא אפס או שלילי:
No positive number
נסו בעצמכם
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("Invalid input");
// TODO: כתבו את הקוד שלכם למטה
// צרו Option<i32> בהתאם לשאלה אם המספר חיובי
// בדקו אם ה-Option הוא Some והדפיסו את ההודעה המתאימה
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מילים6טיפול בהיעדר באמצעות 'Option'
מהו 'Option'?שימוש ב-'match' עם 'Option'is_some() ו-is_none()חילוץ ערך מתוך 'Option'המתודה expectהגדרת ברירת מחדל: unwrap_orסיכום – מציאת איברתרגלו בעצמכם: קומפיילר Rust אונליין