الدوال المنتهية بـ ! و ?

تعديل
نسخ الدرس
تحميل الدرس

الدوال المنتهية بـ ! و ?

في روبي، هناك اصطلاحات تسمية خاصة للدوال تجعل الشيفرة أكثر وضوحاً. في هذا الدرس، سنتعلم عن نوعين مهمين من الدوال: دوال البانج (!) ودوال الاستعلام (?).

دوال البانج (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

نصائح مهمة

  1. دوال البانج (!): تعدّل القيمة الأصلية مباشرة
  2. دوال الاستعلام (?): تُرجع دائماً true أو false
  3. لا تستخدم نتيجة دالة البانج في سلسلة دوال لأنها قد ترجع nil
  4. استخدم دوال الاستعلام مع if و unless لكتابة شيفرة واضحة

مثال عملي: تنظيف والتحقق من البيانات


التمرين

الآن حان دورك! استخدم دوال البانج والاستعلام لإكمال المهام التالية:

  1. استخدم upcase! لتحويل المتغير text إلى أحرف كبيرة
  2. استخدم empty? للتحقق من النص الفارغ
  3. استخدم even? للتحقق من أن العدد زوجي
  4. استخدم include? للتحقق من وجود كلمة في الجملة

الناتج المتوقع: