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

时间:2012-03-19 12:55:36

标签: ruby arrays enumerable

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

例如:

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

我想这样做而不会像select那样遍历整个数组,因为我只需要第一场比赛。

我知道我可以做each并取得成功,但我认为有一种本地方法可以做到这一点;我只是没有在文档中找到它。

4 个答案:

答案 0 :(得分:68)

包括ArrayHash在内的几个核心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则是在获取所有记录时使用的。

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