【发布时间】:2014-12-17 10:25:56
【问题描述】:
我刚刚写了一个我很确定写得很糟糕的方法。我不知道是否有更好的方法来用 ruby 编写这个。这只是一个简单的循环计数。
当然,我可以使用 select 或类似的东西,但这需要在我的数组上循环两次。有没有办法通过循环而不在循环之前声明字段来增加几个变量?类似多选的东西,我不知道。当我有更多计数器时,情况就更糟了。
谢谢!
failed_tests = 0
passed_tests = 0
tests.each do |test|
case test.status
when :failed
failed_tests += 1
when :passed
passed_tests +=1
end
end
【问题讨论】:
-
Ruby 特有的和 Rails+ActiveRecord 方法的新答案。独立于状态数量:)
-
已选择的解决方案,由@vint-i-vuit 给出:Hash[tests.group_by(&:status).map{|k,v| [k,v.size]}]
标签: ruby-on-rails ruby arrays loops