2012-03-19 37 views
31

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

例如:

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

我想做到这一点,而无需通过整个阵列上运行,如select意志,因为我只需要在第一场比赛。

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

回答

61

若干核心红宝石类,包括ArrayHash包括Enumerable模块,其提供了许多有用的方法与这些枚举来工作。

此模块提供find or detect methods你想达到什么里面做:

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

两种方法名是同义词,彼此做完全一样的。

+0

+1,我完全忘记了'find',呵呵。 – 2012-03-19 13:11:45

+0

啊! “find”是我试图记住的方法。愚蠢的我,我正在查看'Array'的文档,而不是'Enumerable'。 – 2012-03-19 13:13:59

+4

在Ruby世界中也被称为'detect' – tokland 2012-03-19 16:05:01

4
arr[arr.index {|num| num > 100 }] #=> 107 
+0

这不是什么要求,但我需要什么,谢谢! – Gabber 2014-06-20 13:00:02

1
arr.find{|el| el>100} #107 (or detect; it's in the Enumerable module.) 
相关问题