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

svdrlsy4  于 2023-08-04  发布在  Ruby
关注(0)|答案(2)|浏览(104)

有没有一种更短的方法来找到数组中满足某些条件的第一个元素:

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

字符串

li9yvcax

li9yvcax1#

试试这个:

my_array.find{|x| x.some_test }

字符串
或者这里有一条捷径(感谢@LarsHaugseth提醒)

my_array.find(&:some_test)

mm9b1k5b

mm9b1k5b2#

对我来说,听起来很困惑。因为我期待收到这样一个请求的多个对象。
我更喜欢使用detect来获得不同的一个。
select用于查找所有这些。
以下是ruby docs对它们的描述:

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

字符串
将枚举中的每个条目传递到块。返回第一个不为false的块。如果没有对象匹配,则调用ifnone并在指定时返回其结果,否则返回nil。

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


返回一个数组,该数组包含block不为false的enum的所有元素

相关问题