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

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...