我在考虑用ruby来区分这些方法我知道,select
返回一个元素数组,detect
只返回一个第一个consisten元素但是如果我输入array.select{ condition }[0]
,有什么区别吗?它将返回第一个单元,如detect
。
例如:
a = [2,3,4,5]
a.detect{|k| k.even? }
# => 2
a.select{|k| k.even? }[0]
# => 2
任何人都可以用这些方法来解释我的其他区别,并举例说明
detect
何时优于select
? 最佳答案
当您只需要检索一个项时,detect
更可取,因为当它发现第一个匹配条件的匹配项时,它将停止对数组的迭代。因为select
检索与条件匹配的所有匹配项,所以它必须遍历整个列表在最坏的情况下(与条件匹配的项不在列表中),它们是等价的,但是如果您要查找的项在列表的早期,则性能会更好。
关于arrays - detect {}和select {} [0]之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39394279/