2013-11-26 5 views
2

Допустим, у меня есть массивКак сравнить значения в массиве

array = [1,2,3,4,5] 

Как сравнить первое со вторым значением, второе с третьим и т.д.

Единственное, что я мог прийти вверх с этим (что довольно некрасиво)

compared = array.each_with_index.map do |a,i| 
    array[i+1].nil? ? nil : array[i] - array[i + 1] 
end 

compared.compact # to remove the last nil value 

То, что я хочу

[-1, -1, -1, -1] 

Есть ли хороший «рубиновый путь» для достижения этого? без использования всех уродливых вещей array[i] и array[i+1].

ответ

1

Вы также можете использовать Enumerable # инъецировать:

a = [1,2,3,4,5] 
b = [] 
a.inject{|i,j| b<< i-j; j} 
p b 

результата:

[-1, -1, -1, -1] 
Смежные вопросы