我在考虑用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/

10-13 05:28