Ruby中获取块返回true的第一个枚举元素的最快方法是什么?Ruby中获取块返回true的第一个枚举元素的最快方法是什么?
例如:
arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first # => 107
我想做到这一点,而无需通过整个阵列上运行,如select
意志,因为我只需要在第一场比赛。
我知道我可以做一个each
并打破成功,但我认为有一个本地方法来做到这一点;我只是没有在文档中找到它。
Ruby中获取块返回true的第一个枚举元素的最快方法是什么?Ruby中获取块返回true的第一个枚举元素的最快方法是什么?
例如:
arr = [12, 88, 107, 500]
arr.select {|num| num > 100 }.first # => 107
我想做到这一点,而无需通过整个阵列上运行,如select
意志,因为我只需要在第一场比赛。
我知道我可以做一个each
并打破成功,但我认为有一个本地方法来做到这一点;我只是没有在文档中找到它。
若干核心红宝石类,包括Array
和Hash
包括Enumerable
模块,其提供了许多有用的方法与这些枚举来工作。
此模块提供find
or detect
methods你想达到什么里面做:
arr = [12, 88, 107, 500]
arr.find { |num| num > 100 } # => 107
两种方法名是同义词,彼此做完全一样的。
arr.find{|el| el>100} #107 (or detect; it's in the Enumerable module.)
+1,我完全忘记了'find',呵呵。 – 2012-03-19 13:11:45
啊! “find”是我试图记住的方法。愚蠢的我,我正在查看'Array'的文档,而不是'Enumerable'。 – 2012-03-19 13:13:59
在Ruby世界中也被称为'detect' – tokland 2012-03-19 16:05:01