如何比较数组中的值

Bik*_*ire 2 ruby arrays

假设我有一个数组

array = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

如何比较第一个值和第二个值,第二个值与第三个值等.

我唯一能想到的就是这个(相当难看)

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
Run Code Online (Sandbox Code Playgroud)

我想要的是

[-1, -1, -1, -1]
Run Code Online (Sandbox Code Playgroud)

实现这一点有一个很好的"红宝石方式"吗?没有使用所有丑陋array[i]array[i+1]东西.

fal*_*tru 9

使用Enumerable#each_cons:

array = [1,2,3,4,5]
array.each_cons(2).map { |a,b| a - b }
# => [-1, -1, -1, -1]
Run Code Online (Sandbox Code Playgroud)