Вопрос

Тривиально с использованием цикла for или each_with_index, просто интересно, есть ли лучший способ сделать это с использованием синтаксиса Ruby.

Мне нужно создать новый массив, который является производным от исходного массива, например:

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