الدوال المنتهية بـ ! و ?
في روبي، هناك اصطلاحات تسمية خاصة للدوال تجعل الشيفرة أكثر وضوحاً. في هذا الدرس، سنتعلم عن نوعين مهمين من الدوال: دوال البانج (!) ودوال الاستعلام (?).
دوال البانج (Bang Methods) - الدوال المنتهية بـ !
الدوال التي تنتهي بعلامة التعجب ! تُعدّل القيمة الأصلية مباشرة، بدلاً من إرجاع نسخة جديدة.
مقارنة بين upcase و upcase!
أمثلة على دوال البانج
متى تستخدم دوال البانج؟
استخدم دوال البانج عندما:
- تريد توفير الذاكرة (لا تحتاج نسختين من النص)
- لا تحتاج القيمة الأصلية
- تريد تعديل البيانات في مكانها
تحذير مهم!
دوال البانج قد تُرجع nil إذا لم يحدث أي تغيير:
لهذا السبب، لا تستخدم نتيجة دالة البانج في سلسلة دوال:
دوال الاستعلام (Predicate Methods) - الدوال المنتهية بـ ?
الدوال التي تنتهي بعلامة استفهام ? تُرجع دائماً قيمة منطقية (true أو false).
أمثلة على دوال الاستعلام للنصوص
أمثلة على دوال الاستعلام للأرقام
أمثلة على دوال الاستعلام للمصفوفات
أمثلة على دوال الاستعلام للقيم
استخدام دوال الاستعلام مع الشروط
دوال الاستعلام مثالية للاستخدام مع if:
جدول ملخص
دوال البانج (!)
| الدالة | الوصف | مثال |
|---|---|---|
upcase! | تحويل لأحرف كبيرة (تعديل) | s.upcase! |
downcase! | تحويل لأحرف صغيرة (تعديل) | s.downcase! |
capitalize! | تكبير الحرف الأول (تعديل) | s.capitalize! |
reverse! | عكس النص (تعديل) | s.reverse! |
strip! | إزالة المسافات (تعديل) | s.strip! |
gsub! | استبدال (تعديل) | s.gsub!("a","b") |
chomp! | إزالة سطر جديد (تعديل) | s.chomp! |
دوال الاستعلام (?)
| الدالة | الوصف | مثال |
|---|---|---|
empty? | هل فارغ؟ | "".empty? → true |
nil? | هل nil؟ | nil.nil? → true |
include? | هل يحتوي؟ | "hi".include?("h") → true |
start_with? | هل يبدأ بـ؟ | "hi".start_with?("h") → true |
end_with? | هل ينتهي بـ؟ | "hi".end_with?("i") → true |
even? | هل زوجي؟ | 4.even? → true |
odd? | هل فردي؟ | 3.odd? → true |
is_a? | هل من نوع؟ | "hi".is_a?(String) → true |
نصائح مهمة
- دوال البانج (!): تعدّل القيمة الأصلية مباشرة
- دوال الاستعلام (?): تُرجع دائماً
trueأوfalse - لا تستخدم نتيجة دالة البانج في سلسلة دوال لأنها قد ترجع
nil - استخدم دوال الاستعلام مع
ifوunlessلكتابة شيفرة واضحة
مثال عملي: تنظيف والتحقق من البيانات
التمرين
الآن حان دورك! استخدم دوال البانج والاستعلام لإكمال المهام التالية:
- استخدم
upcase!لتحويل المتغيرtextإلى أحرف كبيرة - استخدم
empty?للتحقق من النص الفارغ - استخدم
even?للتحقق من أن العدد زوجي - استخدم
include?للتحقق من وجود كلمة في الجملة
الناتج المتوقع: