تعريف الدوال (Defining Methods)
الدوال (Methods) هي كتل من الشيفرة القابلة لإعادة الاستخدام. بدلاً من كتابة نفس الشيفرة مراراً، نُعرّف دالة مرة واحدة ونستدعيها عند الحاجة.
لماذا نستخدم الدوال؟
صيغة تعريف الدوال
تبدأ الدالة بكلمة def وتنتهي بـ end:
مثال بسيط
المعاملات (Parameters)
المعاملات هي المتغيرات التي تستقبلها الدالة:
الفرق بين المعاملات والوسائط
- المعاملات (Parameters): المتغيرات في تعريف الدالة
- الوسائط (Arguments): القيم الفعلية عند استدعاء الدالة
معاملات متعددة
يمكن للدالة استقبال أكثر من معامل:
الناتج:
القيم الافتراضية للمعاملات
يمكن تحديد قيم افتراضية للمعاملات:
عدة معاملات مع قيم افتراضية
الناتج:
قاعدة مهمة
المعاملات ذات القيم الافتراضية يجب أن تأتي بعد المعاملات الإلزامية:
تسمية الدوال
روبي تتبع اتفاقية snake_case لأسماء الدوال:
اتفاقيات تسمية خاصة
الدوال داخل الدوال
يمكن استدعاء دالة من داخل دالة أخرى:
الدوال مع الشروط
الدوال مع الحلقات
الناتج:
المتغيرات المحلية
المتغيرات داخل الدالة محلية - لا يمكن الوصول إليها من خارجها:
نطاق المتغيرات
أمثلة عملية
مثال 1: حاسبة بسيطة
مثال 2: تنسيق النصوص
مثال 3: التحقق من البيانات
مثال 4: رسائل الترحيب
جدول ملخص
| المفهوم | الوصف | المثال |
|---|---|---|
| تعريف دالة | إنشاء دالة جديدة | def greet ... end |
| معامل | متغير في تعريف الدالة | def greet(name) |
| وسيط | قيمة فعلية عند الاستدعاء | greet("أحمد") |
| قيمة افتراضية | قيمة تُستخدم إذا لم يُمرر وسيط | def greet(name = "زائر") |
| متغير محلي | متغير يعمل داخل الدالة فقط | result = 100 داخل الدالة |
أخطاء شائعة
1. نسيان end
2. عدد وسائط خاطئ
3. ترتيب المعاملات الافتراضية
نصائح مهمة
- اختر أسماء واضحة - اسم الدالة يجب أن يصف ما تفعله
- دالة واحدة = مهمة واحدة - لا تجعل الدالة تفعل أشياء كثيرة
- استخدم القيم الافتراضية - لتجعل الدوال أكثر مرونة
- الدوال الصغيرة أفضل - يسهل فهمها واختبارها
تمرين: دالة ترحيب مخصصة
حان وقت التطبيق! في محرر الشيفرة على اليسار:
المطلوب:
- عرّف دالة
greetتستقبل معاملين:name- اسم الشخص (إلزامي)greeting- التحية (افتراضياً "مرحباً")
- الدالة تطبع:
[التحية] [الاسم]! - استدعِ الدالة:
- مع اسم "أحمد" فقط (تستخدم التحية الافتراضية)
- مع اسم "سارة" وتحية "أهلاً"
تلميحات:
- تعريف الدالة:
def greet(name, greeting = "مرحباً") - داخل الدالة استخدم دمج المتغيرات:
"#{greeting} #{name}!" - للاستدعاء:
greet("أحمد")ثمgreet("سارة", "أهلاً")
الناتج المتوقع:
تذكّر: الدوال تجعل شيفرتك منظمة وقابلة لإعادة الاستخدام!