الفئات المفتوحة والترقيع بالقرد
استكشفوا كيفية سماح Ruby بتعديل الفئات الموجودة وإضافة وظائف جديدة
الفئات المفتوحة والترقيع بالقرد درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
تعديل الفئات أثناء التشغيل
الفئات المفتوحة وMonkey Patching
تتيح Ruby تعديل الفئات الموجودة أثناء التشغيل.
تُمكّن هذه الميزة، التي تُسمى «الفئات المفتوحة»، المطورين من توسيع السلوك أو تغييره ديناميكيًا.

ما الفئات المفتوحة؟
في Ruby، يمكنك إعادة فتح الفئات الموجودة وتعديلها.
ويتيح ذلك إضافة أساليب جديدة إلى الفئات المضمّنة أو الفئات التي يعرّفها المستخدم.
إضافة أساليب إلى فئة موجودة
أعد تعريف فئة ببساطة، ثم أضف إليها أساليب جديدة.
class String
def shout
self.upcase + '!!!'
end
end
puts 'hello'.shoutتجاوز الأساليب (Monkey Patching)
يمكنك تجاوز الأساليب الموجودة في فئات Ruby.
class String
def reverse
'Reversed method overridden!'
end
end
puts 'hello'.reverseالحفاظ على سلوك الطريقة الأصلية باستخدام super
استخدم super للحفاظ على سلوك الطريقة الأصلية.
class String
def reverse
super + ' (custom behavior added)'
end
end
puts 'hello'.reverseحالات استخدام الفئات المفتوحة
تفيد الفئات المفتوحة في سيناريوهات متعددة:
- توسيع الفئات المضمّنة بأساليب إضافية.
- تحسين مكتبات الجهات الخارجية.
- تحسين سهولة القراءة وقابلية الصيانة.
مخاطر Monkey Patching
قد يكون Monkey Patching خطيرًا إذا لم يُستخدم بحذر.
- سلوك غير متوقع عند تعديل الفئات الأساسية.
- تعارضات محتملة مع مكتبات الجهات الخارجية.
- صعوبة أكبر في تصحيح الأخطاء والصيانة.
بدائل Monkey Patching
بدلًا من تعديل السلوك العام، فكّر في استخدام refinements.
تتيح refinements تعديل الأصناف ضمن نطاق محدود.
module StringExtensions
refine String do
def shout
upcase + '!!!'
end
end
end
using StringExtensions
puts 'hello'.shoutمراجعة Open Classes
تهانينا!
لقد تعلمت كيفية تعديل الأصناف الموجودة باستخدام Open Classes وMonkey Patching.
بعد ذلك، ستستكشف كيفية استخدام send وeval لتنفيذ الأساليب ديناميكيًا.

تعلم Ruby مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 29
- الدروس
- 109
الأسئلة الشائعة
هل درس «الفئات المفتوحة والترقيع بالقرد» مجاني؟
نعم — نص درس «الفئات المفتوحة والترقيع بالقرد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «الفئات المفتوحة والترقيع بالقرد»؟
استكشفوا كيفية سماح Ruby بتعديل الفئات الموجودة وإضافة وظائف جديدة تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الفئات المفتوحة والترقيع بالقرد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما هي البرمجة الوصفية؟
- التعريف الديناميكي للدوال
- الفئات المفتوحة والترقيع بالقرد
- استخدام send وeval