我的范围如下:
my_range = [1297134..1328348, 1381732..1382716, 1406478..1408262, 1425452..1427966, 1607341..1609354, 1616388..1616625, 1844576..1846076, 1847450..1847672]
Run Code Online (Sandbox Code Playgroud)
我喜欢遍历所有这些范围并找到最后一个范围和下一个第一个范围之间的差异,例如:
1381732 - 1328348
1406478 - 1382716
etc..
Run Code Online (Sandbox Code Playgroud)
我知道有first和last方法,但我不知道如何陈述最后一个范围和下一个范围.
会感激一些帮助.
您可以使用Enumerable#each_cons迭代连续元素:
my_range = [1297134..1328348, 1381732..1382716, 1406478..1408262, 1425452..1427966, 1607341..1609354, 1616388..1616625, 1844576..1846076, 1847450..1847672]
my_range.each_cons(2).map { |r1, r2| r2.first - r1.last }
#=> [53384, 23762, 17190, 179375, 7034, 227951, 1374]
Run Code Online (Sandbox Code Playgroud)