• 0

كيف أنشئ حلقة تكرار على index باستخدام روبي؟

أحتاج إلى أسهل طريقة للقيام بحلقة تكرار على محتويات قائمة في الروبي لتحويل هذه القائمة:

[x1, x2, x3, ... , xN]

إلى هذه:

[[x1, 2], [x2, 3], [x3, 4], ... , [xN, N+1]]

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


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

إذا كنت تستخدم إصدار 1.8.7 أو 1.9 من الروبي، فيمكنك الاستفادة من حقيقة أن التوابع التكرارية مثل each_with_index عندما تقوم باستدعائها من دون كتلة(block)، سوف تقوم بإرجاع كائن Enumerator والذي يمكنك في هذه الحالة استدعاء توابع Enumerable مثل map للتكرار والتعديل كما في المثال التالي:

arr.each_with_index.map { |x,i| [x, i+2] }

أما لو كنت تستخدم إصدار روبي قديم (أقدم من 1.8.7) فيمكنك استدعاء enumerator ومن ثم تقوم بتكرار والتعديل كما في المثال التالي:

require 'enumerator'
arr.enum_for(:each_with_index).map { |x,i| [x, i+2] }

في الإصدار الثاني من الروبي 2.x هنالك تابع متسلسل يدعى with_index والذي يمكنك ربطه إلى map واستخدامه كما في المثال التالي:

array.map.with_index { |item, index| ... }

المصدر

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


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

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

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

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


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

تسجيل الدخول

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


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