اذهب إلى المحتوى
  • 0

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

المبرمج العربي

السؤال

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

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

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

b = a - [1,3]

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

b = [2,2]

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

b = [1,1,2,2]
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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]
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...