给定一个数组提取第一个匹配项:[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+项的数组的情况,select将在几乎所有情况下返回第一个(并且数组已经排序)。而且,我们的代码比较繁重(例如需要往返数据库)。
是否有一个红宝石速记获取第一,然后停止?类似:
[1, 2, 3, 5, 8. 13].each do |num|
return num if num > 3
end
感谢。我正在挖掘Array的API文档,但从来没有看过Enumerable。叹。 – berkes