['Seriously', 'Chunky', 'Bacon'].to_enum.with_index.reverse_each do |word, index|
puts "index #{index}: #{word}"
end
输出量:
index 2: Bacon
index 1: Chunky
index 0: Seriously
您还可以定义自己的reverse_each_with_index方法
class Array
def reverse_each_with_index &block
to_enum.with_index.reverse_each &block
end
end
['Seriously', 'Chunky', 'Bacon'].reverse_each_with_index do |word, index|
puts "index #{index}: #{word}"
end
优化版本
class Array
def reverse_each_with_index &block
(0...length).reverse_each do |i|
block.call self[i], i
end
end
end
7条答案
按热度按时间byqmnocz1#
如果你想知道数组中元素的真实的索引,你可以这样做
输出量:
您还可以定义自己的reverse_each_with_index方法
优化版本
von4xj4u2#
首先对数组
reverse
,然后使用each_with_index
:但是,索引将从
0
到length - 1
,而不是相反。nszi6y053#
既然Ruby总是喜欢给予你选择,你不仅可以做:
但您还可以执行以下操作:
pkmbmrz74#
不复制阵列:
yfwxisqw5#
简单地
yizd12fk6#
真实的正确的答案如下。
这会产生以下输出。
顺便说一句,这至少在Ruby 1.9.3(大约2011年)和更高版本上有效。
xesrikrc7#
在我的用例中,我想使用负索引向后迭代