التعامل مع المصفوفات Arrays في لغة روبي
تعد المصفوفات في لغة روبي أحد الركائز الأساسية للعمل مع البيانات المترابطة والمتنوعة. تُعد المصفوفة بمثابة هيكل بيانات يُستخدم لتخزين مجموعة من العناصر من نفس النوع أو من أنواع مختلفة. يتيح هذا النوع من الهياكل إمكانية الوصول إلى العناصر بسرعة وكفاءة عبر فهرس أو ترتيب محدد، مما يجعله أداة قوية في لغة البرمجة روبي.
تتميز لغة روبي ببساطتها وسهولة استخدامها، مما يجعلها واحدة من اللغات المحببة لدى العديد من المبرمجين. كما أن معالجة المصفوفات في روبي تتم بطريقة مرنة وفعالة، حيث يمكن للمبرمجين التعامل مع المصفوفات باستخدام مجموعة متنوعة من الأساليب والطرق المدمجة، سواءً كانت تلك المصفوفات بسيطة أو معقدة.
إنشاء المصفوفات في روبي
في روبي، يمكن إنشاء المصفوفات بسهولة باستخدام القوسين [] وداخلهم القيم التي تريد تخزينها. المصفوفات في روبي ليست ثابتة الحجم، مما يعني أنه يمكن إضافة أو إزالة العناصر في أي وقت. إليك كيفية إنشاء مصفوفة:
ruby# مصفوفة تحتوي على أرقام
numbers = [1, 2, 3, 4, 5]
# مصفوفة تحتوي على سلاسل نصية
names = ["Alice", "Bob", "Charlie"]
# مصفوفة تحتوي على أنواع بيانات مختلفة
mixed_array = [1, "Hello", 3.14, true]
الوصول إلى عناصر المصفوفة
يمكنك الوصول إلى عناصر المصفوفة في روبي باستخدام الفهرس (index) الذي يبدأ من 0. على سبيل المثال:
rubynumbers = [10, 20, 30, 40, 50]
puts numbers[0] # الناتج: 10
puts numbers[2] # الناتج: 30
puts numbers[-1] # الناتج: 50 (يتم الوصول إلى العنصر الأخير باستخدام الفهرس السالب)
puts numbers[-2] # الناتج: 40 (العنصر قبل الأخير)
إذا حاولت الوصول إلى فهرس غير موجود في المصفوفة، فسيتم إرجاع nil:
rubyputs numbers[10] # الناتج: nil
تعديل المصفوفات
يمكنك تعديل عناصر المصفوفة بسهولة باستخدام الفهرس. إذا أردت تغيير قيمة معينة في المصفوفة، ما عليك سوى تعيين القيمة الجديدة في الموضع المطلوب:
rubynumbers = [10, 20, 30, 40, 50]
# تعديل العنصر الذي في الفهرس 2
numbers[2] = 100
puts numbers # الناتج: [10, 20, 100, 40, 50]
إضافة وحذف العناصر من المصفوفة
روبي توفر لك العديد من الطرق لإضافة أو حذف عناصر من المصفوفة.
إضافة عناصر
-
push: لإضافة عنصر إلى نهاية المصفوفة.rubynumbers = [1, 2, 3] numbers.push(4) puts numbers # الناتج: [1, 2, 3, 4] -
<<: نفس وظيفةpush، إضافة عنصر إلى نهاية المصفوفة.rubynumbers = [1, 2, 3] numbers << 5 puts numbers # الناتج: [1, 2, 3, 5] -
unshift: لإضافة عنصر إلى بداية المصفوفة.rubynumbers = [1, 2, 3] numbers.unshift(0) puts numbers # الناتج: [0, 1, 2, 3]
حذف عناصر
-
pop: لإزالة العنصر الأخير من المصفوفة.rubynumbers = [1, 2, 3] numbers.pop puts numbers # الناتج: [1, 2] -
shift: لإزالة العنصر الأول من المصفوفة.rubynumbers = [1, 2, 3] numbers.shift puts numbers # الناتج: [2, 3] -
delete: لإزالة العنصر المحدد من المصفوفة.rubynumbers = [1, 2, 3, 4] numbers.delete(3) puts numbers # الناتج: [1, 2, 4] -
delete_at: لإزالة العنصر في فهرس محدد.rubynumbers = [1, 2, 3, 4] numbers.delete_at(1) puts numbers # الناتج: [1, 3, 4]
فحص المصفوفات
تقدم روبي مجموعة من الطرق للتحقق من خصائص المصفوفات:
-
empty?: للتحقق مما إذا كانت المصفوفة فارغة.rubynumbers = [] puts numbers.empty? # الناتج: true -
include?: للتحقق مما إذا كانت المصفوفة تحتوي على عنصر معين.rubynumbers = [1, 2, 3, 4] puts numbers.include?(3) # الناتج: true -
lengthأوsize: للحصول على عدد العناصر في المصفوفة.rubynumbers = [1, 2, 3, 4] puts numbers.length # الناتج: 4
التكرار عبر المصفوفات
يمكنك استخدام طرق متعددة للتكرار عبر المصفوفات في روبي. أحد أشهر الطرق هو استخدام each:
rubynumbers = [1, 2, 3, 4]
numbers.each do |number|
puts number
end
توجد أيضًا طرق مثل map و select وغيرها التي توفر لك خيارات إضافية للعمل مع المصفوفات:
-
map: لإنشاء مصفوفة جديدة بناءً على المصفوفة الأصلية.rubynumbers = [1, 2, 3, 4] doubled_numbers = numbers.map { |n| n * 2 } puts doubled_numbers # الناتج: [2, 4, 6, 8] -
select: لاختيار العناصر التي تحقق شرطًا معينًا.rubynumbers = [1, 2, 3, 4] even_numbers = numbers.select { |n| n.even? } puts even_numbers # الناتج: [2, 4] -
reject: لاختيار العناصر التي لا تحقق شرطًا معينًا.rubynumbers = [1, 2, 3, 4] odd_numbers = numbers.reject { |n| n.even? } puts odd_numbers # الناتج: [1, 3]
دمج المصفوفات
يمكنك دمج مصفوفات متعددة معًا باستخدام + أو concat:
rubyarray1 = [1, 2, 3]
array2 = [4, 5, 6]
combined_array = array1 + array2
puts combined_array # الناتج: [1, 2, 3, 4, 5, 6]
أو باستخدام concat:
rubyarray1 = [1, 2, 3]
array1.concat([4, 5, 6])
puts array1 # الناتج: [1, 2, 3, 4, 5, 6]
ترتيب المصفوفات
يمكنك ترتيب العناصر داخل المصفوفة باستخدام sort:
rubynumbers = [5, 3, 8, 1, 4]
sorted_numbers = numbers.sort
puts sorted_numbers # الناتج: [1, 3, 4, 5, 8]
النسخ العميق للـ Arrays
أحيانًا، قد تحتاج إلى إنشاء نسخة عميقة من المصفوفة بحيث يتم نسخ العناصر نفسها بدلًا من الإشارة إليها. يمكنك استخدام dup أو clone لهذا الغرض:
rubynumbers = [1, 2, 3]
new_numbers = numbers.dup
new_numbers[0] = 100
puts numbers # الناتج: [1, 2, 3]
puts new_numbers # الناتج: [100, 2, 3]
المصفوفات متعددة الأبعاد
من الممكن أيضًا التعامل مع المصفوفات متعددة الأبعاد في روبي، مثل المصفوفات المصفوفة أو المصفوفات التي تحتوي على عناصر أخرى من نوع مصفوفة. يمكن الوصول إلى العناصر بسهولة باستخدام فهارس متعددة:
rubymatrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
puts matrix[0][1] # الناتج: 2
puts matrix[2][2] # الناتج: 9
الخلاصة
المصفوفات في لغة روبي تعد من أقوى الهياكل البيانات المتاحة للمطورين. توفر لغة روبي طريقة مرنة للتعامل مع المصفوفات، من حيث إضافة وحذف العناصر، التكرار عبر العناصر، وفحص المصفوفات. باستخدام هذه الطرق، يمكن للمطورين إجراء العمليات المختلفة على المصفوفات بكفاءة ومرونة، مما يجعل روبي لغة متميزة لتطوير البرمجيات.

