什么';在Ruby中,获取块返回true的第一个可枚举元素的最快方法是什么?

什么';在Ruby中,获取块返回true的第一个可枚举元素的最快方法是什么?,ruby,arrays,enumerable,Ruby,Arrays,Enumerable,Ruby中获取块返回true的第一个可枚举元素的最快方法是什么 例如: arr = [12, 88, 107, 500] arr.select {|num| num > 100 }.first # => 107 我不想像select那样遍历整个数组,因为我只需要第一个匹配项 我知道我可以做一个每一个并在成功后突破,但我认为有一个本地方法可以做到这一点;我只是没有在文档中找到它。几个核心ruby类,包括数组和散列都包含了这个模块,它提供了许多有用的方法来处理这些枚举 arr.fin

Ruby中获取块返回true的第一个可枚举元素的最快方法是什么

例如:

arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first  # => 107
我不想像
select
那样遍历整个数组,因为我只需要第一个匹配项


我知道我可以做一个
每一个
并在成功后突破,但我认为有一个本地方法可以做到这一点;我只是没有在文档中找到它。

几个核心ruby类,包括
数组
散列
都包含了这个模块,它提供了许多有用的方法来处理这些枚举

arr.find{|el| el>100} #107 (or detect; it's in the Enumerable module.)
本模块提供了您想要实现的目标:

arr = [12, 88, 107, 500]
arr.find { |num| num > 100 } # => 107

两个方法名称都是同义词,作用完全相同。

我记得这是通过使用ActiveRecord.find,它获取第一条记录和ActiveRecord.select,在获取所有记录时使用它们


这不是一个完美的比较,但可能足以帮助记忆。

啊<代码>查找
是我试图记住的方法。我真傻,我在看
Array
的文档,而不是
Enumerable
。在Ruby世界中也被称为
detect
所有这些都是同义词。我个人更喜欢
find
(当我不在Rails环境中时更是如此)。但是你是对的,通常使用
detect
来消除人们的困惑可能更好。更新-我现在总是使用
detect
别名。我很容易记住
选择拒绝检测
,并且不会与ActiveRecord的
查找
混淆。