假设我做的很简单,.each但我仍然希望保持循环中的位置,我可以这样做:
i = 0
poneys.each do |poney|
#something involving i
#something involving poney
i = i + 1
end
Run Code Online (Sandbox Code Playgroud)
这对我来说看起来不太优雅.所以我想我可以摆脱.each:
for i in 0..poneys.size-1 do
#something involving i
end
Run Code Online (Sandbox Code Playgroud)
...或类似的不同语法.
问题是如果我想访问我必须做的对象:
for i in 0..poneys.size-1 do
poney = poneys[i]
#something involving i
#something involving poney
end
Run Code Online (Sandbox Code Playgroud)
......那也不是很优雅.
有这么好的干净方式吗?
Tob*_*hen 13
您可以使用Enumerable#each_with_index
从官方文档:
对枚举中的每个项调用具有两个参数(项及其索引)的块.
Run Code Online (Sandbox Code Playgroud)hash = Hash.new %w(cat dog wombat).each_with_index do |item, index| hash[item] = index end hash #=> {"cat"=>0, "wombat"=>2, "dog"=>1}