gpt4 book ai didi

ruby - 在 Ruby 中,reject 或 select 是否与 each 组合导致多次迭代?

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:48 25 4
gpt4 key购买 nike

假设下面的代码

arr = [:a, :b, :c, :d]

# version 1
arr.reject{|e| e == :c}.each{ |e| handle(e)}

# version 2
arr.each{|e| handle(e) unless e == :c}

问题是第一个版本是否会导致数组的 2 次迭代:首先是拒绝,然后是每次迭代,或者 ruby​​ 是否足够聪明,可以将代码优化为类似于版本 2 的代码?

最佳答案

第一个版本不能优化到第二个版本中,因为它们不返回相同的对象。

两者都会用:a:b:d调用handle,但第一个版本返回:

[:a, :b, :d]

而第二个版本返回:

[:a, :b, :c, :d]

关于ruby - 在 Ruby 中,reject 或 select 是否与 each 组合导致多次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45074689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com