有没有一种更短的方法来找到数组中满足某些条件的第一个元素:
my_array[ my_array.index {|x| x.some_test} ]
字符串
li9yvcax1#
试试这个:
my_array.find{|x| x.some_test }
字符串或者这里有一条捷径(感谢@LarsHaugseth提醒)
my_array.find(&:some_test)
型
mm9b1k5b2#
对我来说,听起来很困惑。因为我期待收到这样一个请求的多个对象。我更喜欢使用detect来获得不同的一个。和select用于查找所有这些。以下是ruby docs对它们的描述:
detect
select
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的所有元素
2条答案
按热度按时间li9yvcax1#
试试这个:
字符串
或者这里有一条捷径(感谢@LarsHaugseth提醒)
型
mm9b1k5b2#
对我来说,听起来很困惑。因为我期待收到这样一个请求的多个对象。
我更喜欢使用
detect
来获得不同的一个。和
select
用于查找所有这些。以下是ruby docs对它们的描述:
字符串
将枚举中的每个条目传递到块。返回第一个不为false的块。如果没有对象匹配,则调用ifnone并在指定时返回其结果,否则返回nil。
型
返回一个数组,该数组包含block不为false的enum的所有元素