0Pricing
Ruby Academy · درس

أساسيات case/in

المطابقة البنيوية

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

وصول مطابقة الأنماط

ينفّذ تعبير Ruby case/in مطابقة الأنماط البنيوية؛ فهو يختبر شكل البيانات ومحتواها، لا مساواتها فحسب. وهذا تطوير قوي مقارنةً بـ case/when.

case 42
in Integer
  puts 'it is an integer'
end

مقارنة case/in وcase/when

يقارن case/when باستخدام === (بأسلوب المساواة). أما case/in فيقوم بتفكيك القيم ويمكنه ربط المتغيرات. استخدم in لمطابقة البنية.

case 'hello'
in String => s
  puts "string of length #{s.length}"
end

مطابقة القيم الحرفية

يمكن لفرع in مطابقة قيمة حرفية، فيعمل كاختبار مساواة دقيق.

case 3
in 1 then puts 'one'
in 3 then puts 'three'
in _ then puts 'other'
end

أنماط الأنواع

تؤدي تسمية فئة إلى مطابقة أي قيمة من ذلك النوع، مع الاستفادة من === داخليًا.

def describe(x)
  case x
  in Integer then 'number'
  in String then 'text'
  in Array then 'list'
  end
end
puts(describe([1, 2]))

ربط المتغيرات

يقوم المعرّف المجرد في النمط بربط القيمة المطابقة بمتغير جديد يمكنك استخدامه في الفرع.

case [1, 2]
in [a, b]
  puts(a + b)
end

الرمز البديل

يطابق الشرطة السفلية _ أي شيء من دون ربطه بمتغير. استخدمها للمطابقة الشاملة أو لتجاهل بعض المواضع.

case 99
in 0 then puts 'zero'
in _ then puts 'something else'
end

عامل التثبيت

لمطابقة قيمة متغير موجود بدلًا من ربط متغير جديد، ثبّته باستخدام ^.

expected = 5
case 5
in ^expected
  puts 'matched the pinned value'
end

الأنماط البديلة

اجمع الأنماط باستخدام | لمطابقة أي بديل من عدة بدائل في فرع واحد.

case 'b'
in 'a' | 'b' | 'c'
  puts 'in the first three letters'
end

ربط المطابقة كاملة

استخدم pattern => name لاختبار نمط وربط القيمة المطابقة باسم في الوقت نفسه.

case 'Ruby'
in String => word
  puts(word.upcase)
end

NoMatchingPatternError

إذا لم يطابق أي فرع من فروع in ولم يوجد else، يرفع Ruby الاستثناء NoMatchingPatternError. أضف else للتعامل بأمان مع بقية الحالات.

case 10
in 1 then puts 'one'
else
  puts 'no specific match'
end

المطابقة في سطر واحد

ينفّذ العامل => مطابقة إسناد باتجاه اليمين في سطر واحد، ويرفع استثناءً إذا فشلت. أما العامل in فيعيد true أو false بدلًا من ذلك.

result = [1, 2] in [Integer, Integer]
puts result

اختبار سريع

ماذا يحدث إذا لم يتضمن case/in فرعًا مطابقًا ولم يتضمن else؟

مراجعة: أساسيات case/in

تعلمت أساسيات المطابقة البنيوية:

  • يطابق case/in الشكل، وليس المساواة فحسب
  • القيم الحرفية، وأنماط الأنواع، والرمز البديل _
  • ربط المتغيرات وعامل التثبيت ^
  • البدائل باستخدام | وpattern => name
  • تؤدي المطابقة المفقودة إلى رفع NoMatchingPatternError
case 7
in Integer => n then puts(n * 2)
end

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

هل درس «أساسيات case/in» مجاني؟

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

ماذا ستتعلم في «أساسيات case/in»؟

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

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

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

كم من الوقت يستغرق درس «أساسيات case/in»؟

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

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

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

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

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