Menu
Coddy logo textTech

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.

challenge icon

אתגר

קל

תקבלו מספר כקלט. צרו Option<i32> שמכיל Some(number) אם המספר חיובי, או None אם המספר הוא אפס או שלילי. השתמשו ב-.is_some() וב-.is_none() כדי לבדוק את ה-Option ולהדפיס את ההודעה המתאימה.

דרישות:

  • קראו את הקלט והמירו אותו ל-i32
  • צרו משתנה Option<i32>:
    • אם המספר חיובי (גדול מ-0), השימו בו Some(number)
    • אם המספר הוא אפס או שלילי, השימו בו None
  • השתמשו ב-.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 והדפיסו את ההודעה המתאימה
    
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Rust אונליין