符合条件的Ruby Hash#select {}

时间:2019-06-27 10:24:33

标签: ruby-on-rails ruby

我要选择所有关键字,直到累积SUM < X。这不起作用,因为return true停止了脚本。

cum_sum = 0
keywords = keywords.select{|k| 

cum_sum += k[:contribution]

if cum_sum < top
   return true
else
   return false
 end 
}

1 个答案:

答案 0 :(得分:4)

块返回值是最后一条语句的值,您可以这样写:

cum_sum = 0
keywords = keywords.select{|k|
 cum_sum += k[:contribution]
 cum_sum < top
}

还有Enumerable#take_while更适合您的用例