【发布时间】:2011-04-29 09:07:24
【问题描述】:
如果我有一个循环,例如
users.each do |u|
#some code
end
其中 users 是多个用户的哈希值。什么是最简单的条件逻辑来查看您是否在用户哈希中的最后一个用户上并且只想为最后一个用户执行特定代码,例如
users.each do |u|
#code for everyone
#conditional code for last user
#code for the last user
end
end
【问题讨论】:
-
你真的是指哈希吗?对哈希进行排序并不总是可靠的(取决于您如何将内容添加到哈希以及您使用的 ruby 版本)。如果订购不可靠,“最后”项目将不一致。问题中的代码和您得到的答案更适合数组或可枚举。例如,哈希没有
each_with_index或last方法。 -
Hash混合在 Enumerable 中,所以它确实有each_with_index。即使哈希键没有排序,这种逻辑在渲染视图时总是会出现,最后一项可能会以不同的方式显示,无论它在任何数据意义意义上是否实际上是“最后一项”。 -
当然,非常正确,哈希确实有
each_with_index,抱歉。是的,我可以看到它会出现;只是想澄清这个问题。就我个人而言,最好的答案是使用.last,但这不适用于仅数组的哈希。 -
Magic First and Last Indicator in a Loop in Ruby/Rails? 的重复,除了这是一个哈希而不是一个数组。
-
@Andrew 同意它完全相关,但是 meagars 很棒的小答案表明它并不完全是一个骗局。
标签: ruby-on-rails ruby loops each