0Pricing
Ruby Academy · درس

أنماط Find والحراس

الشروط في المطابقات

أنماط Find والحراس درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.

شروط الحراسة

أضف حارسًا باستخدام if أو unless إلى النمط. ولا يطابق الفرع إلا عند نجاح النمط والشرط معًا.

case 7
in Integer => n if n.odd?
  puts 'odd integer'
end

تستخدم الحراس المتغيرات المرتبطة

يمكن للحارس الرجوع إلى المتغيرات التي ربطها النمط، مما يتيح لك التعبير عن شروط غنية حول البيانات المطابقة.

case [4, 9]
in [a, b] if a < b
  puts 'ascending pair'
end

حراس unless

يطابق حارس unless عندما يكون الشرط خاطئًا، أي بعكس if.

case 0
in Integer => n unless n.positive?
  puts 'zero or negative'
end

فروع متعددة محروسة

اجمع الحراس عبر الفروع لبناء تسلسل قرارات واضح.

def grade(score)
  case score
  in Integer => s if s >= 90 then 'A'
  in Integer => s if s >= 70 then 'B'
  else 'C'
  end
end
puts(grade(85))

أنماط البحث

يبحث نمط البحث [*, x, *] في مصفوفة عن نمط فرعي في أي موضع داخلها، باستخدام Splat في الطرفين.

case [1, 2, 3, 4]
in [*, 3, *]
  puts 'contains a 3'
end

الربط داخل البحث

يمكن ربط العنصر المطابق في نمط البحث، مما يلتقط القيمة التي عُثر عليها.

case [10, 20, 30]
in [*, x, *] if x > 25
  puts("found #{x}")
end

التقاط العناصر المحيطة

يمكن تسمية كل من Splat في نمط البحث لالتقاط العناصر التي تسبق المطابقة وتلك التي تليها.

case [1, 2, 99, 4, 5]
in [*before, 99, *after]
  p before
  p after
end

البحث عن عنصر من نوع محدد

تتحد أنماط البحث مع أنماط الأنواع للعثور على أول عنصر من نوع محدد.

case [1, 'hi', 2]
in [*, String => word, *]
  puts(word)
end

الحراس مقابل الأنماط

عبّر عما يمكنك التعبير عنه بنيويًا داخل النمط، واستخدم الحراس فقط للشروط التي لا تستطيع الأنماط تمثيلها، مثل المقارنات العددية أو استدعاءات الأساليب.

case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
  puts 'adult admin'
end

الجمع بين البحث والحارس

تتيح لك أنماط البحث والحراس معًا طرح السؤال التالي: هل يحقق أي عنصر هذا الشرط؟

numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
  puts("first even-ish hit: #{n}")
end

ترتيب الفروع

تُجرَّب الفروع من الأعلى إلى الأسفل، وتفوز أول مطابقة. ضع الأنماط المحروسة الأكثر تحديدًا قبل الأنماط العامة.

case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
end

اختبار سريع

ما الذي يفعله نمط البحث [*, x, *]؟

مراجعة: أنماط البحث والحراس

أضفت الشروط والبحث إلى المطابقة:

  • يعمل الحارسان if وunless على تحسين النمط
  • يمكن للحراس استخدام المتغيرات المرتبطة
  • تبحث أنماط البحث [*, x, *] في أي موضع
  • يمكن تسمية كلا Splat لالتقاط العناصر المحيطة
  • يفوز أول فرع مطابق، لذا يهم الترتيب
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
end

الأسئلة الشائعة

هل درس «أنماط Find والحراس» مجاني؟

نعم — نص درس «أنماط Find والحراس» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.

ماذا ستتعلم في «أنماط Find والحراس»؟

الشروط في المطابقات تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟

لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «أنماط Find والحراس»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟

نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات case/in
  2. أنماط Array وHash
  3. أنماط Find والحراس
  4. حالات الاستخدام العملية
← العودة إلى Ruby Academy