Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

'is_some()' و 'is_none()'

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 37 من 66.

في بعض الأحيان تحتاج إلى التحقق مما إذا كان Option يحتوي على قيمة دون استخراج تلك القيمة فعلياً. توفر لغة Rust طريقتين مريحتين لهذا الغرض: .is_some() و .is_none().

تُرجع كلتا الطريقتين قيمة منطقية (boolean)، مما يجعلهما مثاليين للاستخدام في شروط 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

ورقة مرجعية

استخدم .is_some() للتحقق مما إذا كان Option يحتوي على قيمة:

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

استخدم .is_none() للتحقق مما إذا كان Option فارغاً:

if maybe_score.is_none() {
    println!("No score available");
}

كلتا الطريقتين تعيدان قيمًا منطقية (true أو false).

جرّب بنفسك

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 تحقق من الـ
    
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow