gpt4 book ai didi

ruby - 如何在 Ruby 中实现枚举器?

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

例如:

a = [1,2,3,4,5]
a.delete_if { |x| x > 3 }

相当于:

a = [1,2,3,4,5]
a.delete_if.each.each.each.each { |x| x > 3 }

我知道 a.delete_if 返回一个枚举器。但是当 each block 返回 true 时,它​​如何知道应该删除对象呢?如何手动(和在 Ruby 中)实现 delete_if

最佳答案

可以看看Rubinius源码:enumerable module

这里是一个拒绝方法的例子:

  def reject
return to_enum(:reject) unless block_given?

ary = []
each do |o|
ary << o unless yield(o)
end

ary
end

关于ruby - 如何在 Ruby 中实现枚举器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7692057/

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