Ruby中获取第一个可返回块的第一个可枚举元素的最快方法是什么?
例如:
arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first # => 107
我想这样做而不会像select
那样遍历整个数组,因为我只需要第一场比赛。
我知道我可以做each
并取得成功,但我认为有一种本地方法可以做到这一点;我只是没有在文档中找到它。
答案 0 :(得分:68)
包括Array
和Hash
在内的几个核心ruby类包含Enumerable
模块,该模块提供了许多有用的方法来处理这些枚举。
此模块提供find
or detect
methods,它完全符合您的要求:
arr = [12, 88, 107, 500]
arr.find { |num| num > 100 } # => 107
两个方法名称都是彼此的同义词,并且完全相同。
答案 1 :(得分:5)
arr[arr.index {|num| num > 100 }] #=> 107
答案 2 :(得分:2)
arr.find{|el| el>100} #107 (or detect; it's in the Enumerable module.)
答案 3 :(得分:0)
我通过考虑ActiveRecord.find来记住这一点,它会为您提供第一条记录,而ActiveRecord.select则是在获取所有记录时使用的。
这不是一个完美的比较,但足以帮助记忆。