Hash.each中的最后一个元素

时间:2011-05-23 09:41:08

标签: ruby

  

可能重复:
  Tell the end of a .each loop in ruby

我有一个哈希:

 => {"foo"=>1, "bar"=>2, "abc"=>3} 

和代码:

foo.each do |elem|
  # smth
end

如何识别循环中的元素是最后一个? 像

这样的东西
if elem == foo.last
  puts 'this is a last element!'
end

1 个答案:

答案 0 :(得分:15)

例如:

foo.each_with_index do |elem, index|
    if index == foo.length - 1
        puts 'this is a last element!'
    else
        # smth
    end
end

您可能遇到的问题是地图中的项目没有按任何特定顺序排列。在我的Ruby版本中,我按以下顺序看到它们:

["abc", 3]
["foo", 1]
["bar", 2]

也许您想要遍历排序的键。像这样举例如:

foo.keys.sort.each_with_index do |key, index|
    if index == foo.length - 1
        puts 'this is a last element!'
    else
        p foo[key]
    end
end