• 0

كيف أحذف عناصر من مصفوفة روبي؟

أملك المصفوفة التالية:

a = [1,1,1,2,2,3]

ولقد قمت بهذه العملية لحذف عنصر 3 واحد و 1 واحد:

b = a - [1,3]

لكنني أحصل على هذه السلسلة النصية:

b = [2,2]

بدلا من هذه التي أريدها، فما سبب المشكلة؟

b = [1,1,2,2]

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك طرق عديدة في لغة روبي لحذف عناصر محددة من المصفوفة، فيمكنك على سبيل المثال وضع العناصر التي تريد حذفها في مصفوفة ومن ثم استخدام حلقة تكرار each على عناصر المصفوفة كما يظهر في المثال التالي:

a= [1,1,1,2,2,3]
delete_list = [1,3]
delete_list.each do |del|
    a.delete_at(a.index(del))
end

أو يمكنك فعل ذالك بطريقة أخرى كما في المثال التالي:

[1,3].inject([1,1,1,2,2,3]) do |memo,element|
  memo.tap do |memo|
    i = memo.find_index(e)
    memo.delete_at(i) if i
  end
end

أو يمكنك استخدام هذه الطريقة بسطر واحد:

b = [1,1,3].each.with_object( a ) { |del| a.delete_at( a.index( del ) ) }

ويمكنك أيضا استخدام lambda بوضع محتويات المثال السابق في دالة lambda كما في المثال التالي:

subtract = lambda do |minuend, subtrahend|
  subtrahend.each.with_object( minuend ) { |del| minuend.delete_at( minuend.index( del ) ) }
end

ولاستدعاءها يمكنك كتابة السطر التالي:

subtract.call a, [1,1,3]

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن