是否可以按给定的顺序循环结果集,但只能反向打印索引?例如:
items = ["a", "b", "c"]
items.each_with_index do |value, index|
puts index.to_s + ": " + value
end
给出:
0: a
1: b
2: c
有没有办法只反转索引,以便输出为:
2: a
1: b
0: c
答案 0 :(得分:3)
>> items = %w{a b c}
>> (0...items.size).reverse_each.zip(items) do |index, value|
?> puts "#{index}: #{value}"
>> end
2: a
1: b
0: c
答案 1 :(得分:3)
我不确定您想要实现的目标,但使用reverse_each
链接枚举器可能很有用:
items.reverse_each.each_with_index do |value, index|
puts index.to_s + ": " + value
end
产生
0: c
1: b
2: a
添加另一个reverse_each
以获得您要求的结果:
items.reverse_each.each_with_index.reverse_each do |value, index|
puts index.to_s + ": " + value
end
产生
2: a
1: b
0: c
答案 2 :(得分:0)
简单地从项目长度中减去索引,并附加1 - 以匹配索引:
items.each_with_index { |val, index| puts (items.length - index - 1).to_s + ": " + val }
答案 3 :(得分:0)
offset = items.length - 1
items.each_with_index { |value, i| puts "#{offset - i}: #{value}" }