المبرمج العربي نشر 17 ديسمبر 2015 أرسل تقرير نشر 17 ديسمبر 2015 أملك المصفوفة التالية:a = [1,1,1,2,2,3] ولقد قمت بهذه العملية لحذف عنصر 3 واحد و 1 واحد:b = a - [1,3] لكنني أحصل على هذه السلسلة النصية:b = [2,2] بدلا من هذه التي أريدها، فما سبب المشكلة؟b = [1,1,2,2] اقتباس
0 هشام رزق الله نشر 17 ديسمبر 2015 أرسل تقرير نشر 17 ديسمبر 2015 هنالك طرق عديدة في لغة روبي لحذف عناصر محددة من المصفوفة، فيمكنك على سبيل المثال وضع العناصر التي تريد حذفها في مصفوفة ومن ثم استخدام حلقة تكرار 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] اقتباس
السؤال
المبرمج العربي
أملك المصفوفة التالية:
ولقد قمت بهذه العملية لحذف عنصر 3 واحد و 1 واحد:
لكنني أحصل على هذه السلسلة النصية:
بدلا من هذه التي أريدها، فما سبب المشكلة؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.