带有条件的数组的第一个元素

是否有一个简短的方法来find满足一些条件的数组中的第一个元素:

my_array[ my_array.index {|x| x.some_test} ] 

尝试这个:

 my_array.find{|x| x.some_test } 

或者这里有一个捷径(感谢@LarsHaugseth提醒)

 my_array.find(&:some_test) 

至于我觉得混乱。 正如我期望收到多个对象这样的请求。

我更喜欢使用detect获取不同的。

select查找所有这些。

这里ruby文档告诉他们:

 detect(ifnone = nil) {| obj | block } → obj or nil click to toggle source find(ifnone = nil) {| obj | block } → obj or nil detect(ifnone = nil) → an_enumerator find(ifnone = nil) → an_enumerator 

传入enum中的每个条目以阻止。 返回第一个块不是假的。 如果没有对象匹配,则调用ifnone并在指定时返回结果,否则返回nil。

 find_all {| obj | block } → array click to toggle source select {| obj | block } → array find_all → an_enumerator select → an_enumerator 

返回一个包含枚举的所有元素的数组,其中block不是false