دوال المصفوفات الشائعة
في الدرس السابق تعلمنا كيفية إنشاء المصفوفات والتعامل معها. الآن سنتعرف على الدوال المدمجة التي تجعل العمل مع المصفوفات أسهل وأقوى.
الوصول إلى العناصر
first و last
للحصول على العناصر الأولى أو الأخيرة:
take و drop
لأخذ عناصر من البداية أو تجاهلها:
معلومات عن المصفوفة
length و size و count
للحصول على عدد العناصر:
empty? و any? و none?
للتحقق من محتويات المصفوفة:
include?
للتحقق من وجود عنصر معين:
index و rindex
لإيجاد موضع عنصر:
ترتيب المصفوفة
sort
لترتيب العناصر تصاعدياً:
sort مع ترتيب مخصص
reverse
لعكس ترتيب العناصر:
shuffle
لخلط العناصر عشوائياً:
تنظيف المصفوفة
uniq
لإزالة العناصر المكررة:
compact
لإزالة قيم nil:
flatten
لتسطيح المصفوفات المتداخلة:
مثال عملي:
جدول ملخص الدوال
| الدالة | الوصف | المثال |
|---|---|---|
first | العنصر الأول | arr.first → أول عنصر |
last | العنصر الأخير | arr.last → آخر عنصر |
length | عدد العناصر | arr.length → العدد |
include? | هل يحتوي على قيمة؟ | arr.include?(x) → true/false |
sort | ترتيب تصاعدي | arr.sort → مرتبة |
reverse | عكس الترتيب | arr.reverse → معكوسة |
uniq | إزالة التكرار | arr.uniq → بدون تكرار |
compact | إزالة nil | arr.compact → بدون nil |
flatten | تسطيح المتداخلة | arr.flatten → مسطحة |
دوال إضافية مفيدة
min و max و sum
minmax
للحصول على الأصغر والأكبر معاً:
sample
لاختيار عنصر عشوائي:
join
لتحويل المصفوفة إلى نص:
zip
لدمج عدة مصفوفات:
أمثلة عملية
مثال 1: تنظيف بيانات
مثال 2: تحليل الدرجات
الناتج:
مثال 3: معالجة قائمة أسماء
مثال 4: دمج قوائم مهام
الناتج:
نصائح مهمة
- معظم الدوال لا تعدل الأصل - تُرجع مصفوفة جديدة
- استخدم ! للتعديل المباشر - مثل
sort!وuniq!وcompact! - سلسل الدوال معاً -
arr.compact.uniq.sortأنظف من خطوات منفصلة - تحقق من الفراغ أولاً -
if arr.any?قبل العمليات - استخدم count بدلاً من length للعد المشروط
الفرق بين الدوال العادية ودوال البانج (!)
تمرين: تنظيف ومعالجة البيانات
حان وقت التطبيق! في محرر الشيفرة على اليسار:
المطلوب:
لديك مصفوفة بيانات غير نظيفة:
- نظّف البيانات (أزل nil وأزل التكرار ورتّب تصاعدياً)
- اطبع البيانات النظيفة باستخدام
p - اطبع عدد العناصر بعد التنظيف
- اطبع أول عنصر
- اطبع آخر عنصر
- اطبع مجموع العناصر
- تحقق هل تحتوي على الرقم 5 (اطبع true أو false)
تلميحات:
- سلسل الدوال:
data.compact.uniq.sort - استخدم
.lengthأو.countلعدد العناصر - استخدم
.firstو.lastللوصول - استخدم
.sumللمجموع - استخدم
.include?(5)للتحقق
الناتج المتوقع:
تذكّر: دوال المصفوفات في روبي قوية جداً وتجعل معالجة البيانات سهلة وممتعة!