给定一个数组:[1, 2, 3, 5, 8. 13]
我可以选择大于 3 的所有项目:
[1, 2, 3, 5, 8. 13].select { |num| num > 3 }
(我知道简写 select(&:>)
语法,这不是这里的重点)
我现在可以轻松返回第一个。
[1, 2, 3, 5, 8. 13].select { |num| num > 3 }.first
但是当实际比较重的时候,这个效率就不是很高了。我正在尝试优化我们有 300 多个项目的数组的情况,选择将在几乎所有情况下返回第一个(并且数组已经排序)。此外,我们进行比较的代码非常繁重(例如,需要往返数据库)。
是否有 ruby 速记来获取第一个然后停止?类似于:
[1, 2, 3, 5, 8. 13].each do |num|
return num if num > 3
end
请您参考如下方法:
只需使用 find
:
[1, 2, 3, 5, 8, 13].find { |num| num > 3 }
#=> 5