سؤال

وتافهة باستخدام لحلقة أو each_with_index، أتساءل فقط إذا كانت هناك طريقة أفضل للقيام بذلك باستخدام بناء الجملة روبي.

ولست بحاجة لخلق مجموعة جديدة هذا هو مشتق من مجموعة مصدر، على سبيل المثال:

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
هل كانت مفيدة؟

المحلول

old_array.each_cons(2).map{|x, y| y - x}

وEnumerable#each_cons دعا مع بحجم قطعة من 2 ولكن من دون كتلة إرجاع العداد الذي سوف تكرار عبر كل زوج من عناصر متتالية في old_array. ثم نحن فقط استخدام map لإجراء الطرح على كل زوج.

نصائح أخرى

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top