0Pricing
Ruby Academy · درس

أنماط Array وHash

تفكيك البيانات

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

أنماط المصفوفات

يطابق نمط المصفوفة حسب الموضع والطول. ويُفحَص كل نمط عنصر مقابل العنصر المناظر له.

case [1, 2, 3]
in [1, 2, 3]
  puts 'exact match'
end

ربط عناصر المصفوفة

استخدم المعرّفات لالتقاط كل موضع في متغير.

case [10, 20]
in [x, y]
  puts(x + y)
end

أهمية الطول

يتطلب نمط المصفوفة افتراضيًا الطول المطابق تمامًا. لذلك لا يطابق نمط مكوّن من عنصرين مصفوفةً مكوّنة من ثلاثة عناصر.

case [1, 2, 3]
in [a, b]
  puts 'two'
in [a, b, c]
  puts 'three'
end

Splat لبقية العناصر

يلتقط Splat *rest أي عدد من العناصر المتبقية داخل مصفوفة، مما يجعل الطول مرنًا.

case [1, 2, 3, 4]
in [first, *rest]
  puts(first)
  p rest
end

Splat في المنتصف

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

case [1, 2, 3, 4, 5]
in [first, *, last]
  puts("#{first} ... #{last}")
end

أنماط Hash

يطابق نمط Hash حسب المفاتيح. فهو يتحقق من وجود المفاتيح المحددة ومن مطابقة قيمها، مع السماح بالمفاتيح الإضافية.

case { name: 'Ada', age: 36 }
in { name: 'Ada' }
  puts 'found Ada'
end

ربط قيم Hash

لالتقاط قيمة، امنح المفتاح اسم ربط. أما كتابة المفتاح وحده فتربطه بمتغير يحمل الاسم نفسه.

case { name: 'Bob', age: 25 }
in { name: String => n, age: Integer => a }
  puts("#{n} is #{a}")
end

الربط المختصر للمفاتيح

يؤدي حذف النمط بعد المفتاح إلى ربط متغير يحمل اسم المفتاح تلقائيًا.

case { city: 'Istanbul' }
in { city: }
  puts(city)
end

اشتراط عدم وجود مفاتيح إضافية

تتجاهل أنماط Hash المفاتيح الإضافية افتراضيًا. أضف **nil لاشتراط وجود المفاتيح المدرجة فقط.

case { a: 1 }
in { a: 1, **nil }
  puts 'exactly one key'
end

الأنماط المتداخلة

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

data = { user: { name: 'Ada', tags: ['admin', 'dev'] } }
case data
in { user: { name:, tags: [first_tag, *] } }
  puts("#{name}: #{first_tag}")
end

مطابقة JSON المحلَّل

تتوافق مطابقة الأنماط بشكل رائع مع بيانات JSON أو CSV المحلَّلة، إذ تستخرج الحقول التي تحتاج إليها تحديدًا.

require 'json'
resp = JSON.parse('{"status":"ok","items":[1,2,3]}', symbolize_names: true)
case resp
in { status: 'ok', items: }
  puts(items.sum)
end

اختبار سريع

هل سيطابق نمط Hash in { a: 1 } افتراضيًا Hash‏ { a: 1, b: 2 }؟

مراجعة: أنماط المصفوفات وHash

يمكنك تفكيك المجموعات:

  • تطابق أنماط المصفوفات حسب الموضع والطول
  • يلتقط *rest العناصر المتبقية
  • تطابق أنماط Hash حسب المفتاح مع السماح بالمفاتيح الإضافية
  • يربط الاختصار { key: } متغيرات تحمل الأسماء نفسها
  • يمنع **nil المفاتيح الإضافية، ويمكن تداخل الأنماط بعمق
case { id: 1, items: [9, 8] }
in { items: [head, *] } then puts head
end

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

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

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

ماذا ستتعلم في «أنماط Array وHash»؟

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

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

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

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

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

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

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

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

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