0Pricing
Ruby Academy · درس

حالات الاستخدام العملية

تحليل البيانات المنظّمة

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

لماذا تتفوق مطابقة الأنماط

تكون مطابقة الأنماط في أفضل حالاتها عند التعامل مع البيانات المهيكلة، مثل استجابات API وأشجار الإعدادات والملفات المحلَّلة. فهي تستبدل عمليات التحقق المتداخلة باستخدام if/dig بتعبير واحد واضح.

require 'json'
resp = JSON.parse('{"ok":true,"data":42}', symbolize_names: true)
case resp
in { ok: true, data: }
  puts(data)
end

التعامل مع نجاح API وخطئها

طابق أشكال الاستجابات المختلفة في فروع منفصلة، واستخرج الحقول المناسبة لكل منها.

def handle(resp)
  case resp
  in { status: 'ok', result: }
    "got #{result}"
  in { status: 'error', message: }
    "error: #{message}"
  end
end
puts(handle({ status: 'error', message: 'bad input' }))

تحليل وسائط الأوامر

طابق مصفوفة من الوسائط لتوزيع الأوامر بوضوح.

def run(args)
  case args
  in ['add', a, b]
    a.to_i + b.to_i
  in ['echo', *rest]
    rest.join(' ')
  end
end
puts(run(['add', '3', '4']))
puts(run(['echo', 'hi', 'there']))

التحقق من شكل السجل

استخدم نمطًا للتأكد من احتواء السجل على الحقول والأنواع المطلوبة قبل معالجته.

def valid?(rec)
  case rec
  in { name: String, age: Integer => a } if a >= 0
    true
  else
    false
  end
end
puts(valid?({ name: 'Ada', age: 36 }))
puts(valid?({ name: 'X', age: -1 }))

تفكيك الإعدادات المتداخلة

استخرج قيم الإعدادات العميقة في مطابقة واحدة بدلًا من عمليات البحث المتسلسلة.

cfg = { server: { host: 'localhost', port: 8081 } }
case cfg
in { server: { host:, port: } }
  puts("#{host}:#{port}")
end

الاتحادات الموسومة

نمط شائع في البرمجة الوظيفية: تُوسم البيانات حسب النوع، ثم تُوزَّع معالجتها وفق الوسم.

def area(shape)
  case shape
  in { type: 'circle', r: }
    (3.14 * r * r).round(2)
  in { type: 'rect', w:, h: }
    w * h
  end
end
puts(area({ type: 'rect', w: 3, h: 4 }))

المطابقة باستخدام deconstruct

تصبح الكائنات المخصصة قابلة للمطابقة إذا عرّفت deconstruct (لأنماط المصفوفات). وتنفّذ Struct ذلك تلقائيًا.

Point = Struct.new(:x, :y)
case Point.new(1, 2)
in [x, y]
  puts("#{x},#{y}")
end

المطابقة باستخدام deconstruct_keys

عرّف deconstruct_keys لدعم أنماط Hash. وتوفر Struct هذا أيضًا، مما يتيح المطابقة باستخدام الأسماء.

Point = Struct.new(:x, :y)
case Point.new(3, 4)
in { x:, y: }
  puts("x=#{x} y=#{y}")
end

الفئة مع النمط

اجمع نمط نوع مع نمط Hash لمطابقة فئة محددة وحقولها.

User = Struct.new(:name, :admin, keyword_init: true)
case User.new(name: 'Ada', admin: true)
in User(admin: true, name:)
  puts("#{name} is an admin")
end

البدائل الآمنة

وفّر دائمًا else عندما يحتمل ألا تطابق المدخلات النمط، فتحوّل الاستثناء إلى معالجة سلسة.

def parse(data)
  case data
  in { id: Integer => id }
    "id #{id}"
  else
    'unrecognized'
  end
end
puts(parse({ name: 'x' }))

جمع الأجزاء معًا

تدفق واقعي: حلّل JSON، وطابق بنيته، وتحقق منه باستخدام حارس، ثم نفّذ الإجراء، كل ذلك في تعبير واحد منظم.

require 'json'
event = JSON.parse('{"kind":"purchase","amount":150}', symbolize_names: true)
case event
in { kind: 'purchase', amount: Integer => amt } if amt > 100
  puts("big purchase: #{amt}")
in { kind: 'purchase', amount: }
  puts("purchase: #{amount}")
end

اختبار سريع

ما الأسلوب الذي يجب أن تعرّفه فئة مخصصة لدعم مطابقة أنماط Hash مثل in { x:, y: }؟

مراجعة: حالات الاستخدام العملية

طبّقت مطابقة الأنماط على مشكلات واقعية:

  • توزيع استجابات API والأوامر
  • التحقق من شكل السجلات باستخدام الحراس
  • تفكيك الإعدادات المتداخلة والاتحادات الموسومة
  • استخدام deconstruct / deconstruct_keys مع الكائنات المخصصة
  • إضافة else دائمًا لتوفير بدائل آمنة

لقد أكملت دورة مطابقة الأنماط في Ruby.

case { type: 'circle', r: 2 }
in { type: 'circle', r: } then puts(3.14 * r * r)
end

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

هل درس «حالات الاستخدام العملية» مجاني؟

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

ماذا ستتعلم في «حالات الاستخدام العملية»؟

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

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

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

كم من الوقت يستغرق درس «حالات الاستخدام العملية»؟

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

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

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

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

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