البرمجة

التعامل مع المصفوفات في روبي

التعامل مع المصفوفات Arrays في لغة روبي

تعد المصفوفات في لغة روبي أحد الركائز الأساسية للعمل مع البيانات المترابطة والمتنوعة. تُعد المصفوفة بمثابة هيكل بيانات يُستخدم لتخزين مجموعة من العناصر من نفس النوع أو من أنواع مختلفة. يتيح هذا النوع من الهياكل إمكانية الوصول إلى العناصر بسرعة وكفاءة عبر فهرس أو ترتيب محدد، مما يجعله أداة قوية في لغة البرمجة روبي.

تتميز لغة روبي ببساطتها وسهولة استخدامها، مما يجعلها واحدة من اللغات المحببة لدى العديد من المبرمجين. كما أن معالجة المصفوفات في روبي تتم بطريقة مرنة وفعالة، حيث يمكن للمبرمجين التعامل مع المصفوفات باستخدام مجموعة متنوعة من الأساليب والطرق المدمجة، سواءً كانت تلك المصفوفات بسيطة أو معقدة.

إنشاء المصفوفات في روبي

في روبي، يمكن إنشاء المصفوفات بسهولة باستخدام القوسين [] وداخلهم القيم التي تريد تخزينها. المصفوفات في روبي ليست ثابتة الحجم، مما يعني أنه يمكن إضافة أو إزالة العناصر في أي وقت. إليك كيفية إنشاء مصفوفة:

ruby
# مصفوفة تحتوي على أرقام numbers = [1, 2, 3, 4, 5] # مصفوفة تحتوي على سلاسل نصية names = ["Alice", "Bob", "Charlie"] # مصفوفة تحتوي على أنواع بيانات مختلفة mixed_array = [1, "Hello", 3.14, true]

الوصول إلى عناصر المصفوفة

يمكنك الوصول إلى عناصر المصفوفة في روبي باستخدام الفهرس (index) الذي يبدأ من 0. على سبيل المثال:

ruby
numbers = [10, 20, 30, 40, 50] puts numbers[0] # الناتج: 10 puts numbers[2] # الناتج: 30 puts numbers[-1] # الناتج: 50 (يتم الوصول إلى العنصر الأخير باستخدام الفهرس السالب) puts numbers[-2] # الناتج: 40 (العنصر قبل الأخير)

إذا حاولت الوصول إلى فهرس غير موجود في المصفوفة، فسيتم إرجاع nil:

ruby
puts numbers[10] # الناتج: nil

تعديل المصفوفات

يمكنك تعديل عناصر المصفوفة بسهولة باستخدام الفهرس. إذا أردت تغيير قيمة معينة في المصفوفة، ما عليك سوى تعيين القيمة الجديدة في الموضع المطلوب:

ruby
numbers = [10, 20, 30, 40, 50] # تعديل العنصر الذي في الفهرس 2 numbers[2] = 100 puts numbers # الناتج: [10, 20, 100, 40, 50]

إضافة وحذف العناصر من المصفوفة

روبي توفر لك العديد من الطرق لإضافة أو حذف عناصر من المصفوفة.

إضافة عناصر

  • push: لإضافة عنصر إلى نهاية المصفوفة.

    ruby
    numbers = [1, 2, 3] numbers.push(4) puts numbers # الناتج: [1, 2, 3, 4]
  • <<: نفس وظيفة push، إضافة عنصر إلى نهاية المصفوفة.

    ruby
    numbers = [1, 2, 3] numbers << 5 puts numbers # الناتج: [1, 2, 3, 5]
  • unshift: لإضافة عنصر إلى بداية المصفوفة.

    ruby
    numbers = [1, 2, 3] numbers.unshift(0) puts numbers # الناتج: [0, 1, 2, 3]

حذف عناصر

  • pop: لإزالة العنصر الأخير من المصفوفة.

    ruby
    numbers = [1, 2, 3] numbers.pop puts numbers # الناتج: [1, 2]
  • shift: لإزالة العنصر الأول من المصفوفة.

    ruby
    numbers = [1, 2, 3] numbers.shift puts numbers # الناتج: [2, 3]
  • delete: لإزالة العنصر المحدد من المصفوفة.

    ruby
    numbers = [1, 2, 3, 4] numbers.delete(3) puts numbers # الناتج: [1, 2, 4]
  • delete_at: لإزالة العنصر في فهرس محدد.

    ruby
    numbers = [1, 2, 3, 4] numbers.delete_at(1) puts numbers # الناتج: [1, 3, 4]

فحص المصفوفات

تقدم روبي مجموعة من الطرق للتحقق من خصائص المصفوفات:

  • empty?: للتحقق مما إذا كانت المصفوفة فارغة.

    ruby
    numbers = [] puts numbers.empty? # الناتج: true
  • include?: للتحقق مما إذا كانت المصفوفة تحتوي على عنصر معين.

    ruby
    numbers = [1, 2, 3, 4] puts numbers.include?(3) # الناتج: true
  • length أو size: للحصول على عدد العناصر في المصفوفة.

    ruby
    numbers = [1, 2, 3, 4] puts numbers.length # الناتج: 4

التكرار عبر المصفوفات

يمكنك استخدام طرق متعددة للتكرار عبر المصفوفات في روبي. أحد أشهر الطرق هو استخدام each:

ruby
numbers = [1, 2, 3, 4] numbers.each do |number| puts number end

توجد أيضًا طرق مثل map و select وغيرها التي توفر لك خيارات إضافية للعمل مع المصفوفات:

  • map: لإنشاء مصفوفة جديدة بناءً على المصفوفة الأصلية.

    ruby
    numbers = [1, 2, 3, 4] doubled_numbers = numbers.map { |n| n * 2 } puts doubled_numbers # الناتج: [2, 4, 6, 8]
  • select: لاختيار العناصر التي تحقق شرطًا معينًا.

    ruby
    numbers = [1, 2, 3, 4] even_numbers = numbers.select { |n| n.even? } puts even_numbers # الناتج: [2, 4]
  • reject: لاختيار العناصر التي لا تحقق شرطًا معينًا.

    ruby
    numbers = [1, 2, 3, 4] odd_numbers = numbers.reject { |n| n.even? } puts odd_numbers # الناتج: [1, 3]

دمج المصفوفات

يمكنك دمج مصفوفات متعددة معًا باستخدام + أو concat:

ruby
array1 = [1, 2, 3] array2 = [4, 5, 6] combined_array = array1 + array2 puts combined_array # الناتج: [1, 2, 3, 4, 5, 6]

أو باستخدام concat:

ruby
array1 = [1, 2, 3] array1.concat([4, 5, 6]) puts array1 # الناتج: [1, 2, 3, 4, 5, 6]

ترتيب المصفوفات

يمكنك ترتيب العناصر داخل المصفوفة باستخدام sort:

ruby
numbers = [5, 3, 8, 1, 4] sorted_numbers = numbers.sort puts sorted_numbers # الناتج: [1, 3, 4, 5, 8]

النسخ العميق للـ Arrays

أحيانًا، قد تحتاج إلى إنشاء نسخة عميقة من المصفوفة بحيث يتم نسخ العناصر نفسها بدلًا من الإشارة إليها. يمكنك استخدام dup أو clone لهذا الغرض:

ruby
numbers = [1, 2, 3] new_numbers = numbers.dup new_numbers[0] = 100 puts numbers # الناتج: [1, 2, 3] puts new_numbers # الناتج: [100, 2, 3]

المصفوفات متعددة الأبعاد

من الممكن أيضًا التعامل مع المصفوفات متعددة الأبعاد في روبي، مثل المصفوفات المصفوفة أو المصفوفات التي تحتوي على عناصر أخرى من نوع مصفوفة. يمكن الوصول إلى العناصر بسهولة باستخدام فهارس متعددة:

ruby
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] puts matrix[0][1] # الناتج: 2 puts matrix[2][2] # الناتج: 9

الخلاصة

المصفوفات في لغة روبي تعد من أقوى الهياكل البيانات المتاحة للمطورين. توفر لغة روبي طريقة مرنة للتعامل مع المصفوفات، من حيث إضافة وحذف العناصر، التكرار عبر العناصر، وفحص المصفوفات. باستخدام هذه الطرق، يمكن للمطورين إجراء العمليات المختلفة على المصفوفات بكفاءة ومرونة، مما يجعل روبي لغة متميزة لتطوير البرمجيات.