gpt4 book ai didi

ruby - "find_all"和 "select"是一回事吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:26:41 28 4
gpt4 key购买 nike

这两个语句给我相同的结果:

[1,2,3,4].find_all { |x| x.even? }

[1,2,3,4].select{ |x| x.even? }

find_all 只是一个别名吗?有理由使用一个而不是另一个吗?

最佳答案

#find_all#select 非常相似;差异非常微妙。在大多数情况下,它们是等价的。这取决于实现它的类。

Enumerable#find_allEnumerable#select 在同一代码上运行。

ArrayRange 也是如此,因为它们使用 Enumerable 实现。

Hash的情况下,#select被重新定义为返回一个Hash而不是一个Array,但是#find_all继承自可枚举

a = [1, 2, 3, 4, 5, 6]
h = {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}

a.select{|x| x.even?} # => [2, 4, 6]
a.find_all{|x| x.even?} # => [2, 4, 6]

h.select{|k,v| v.even?} # => {:b=>2, :d=>4, :f=>6}
h.find_all{|k,v| v.even?} # => [[:b, 2], [:d, 4], [:f, 6]]

关于ruby - "find_all"和 "select"是一回事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999192/

28 4 0