gpt4 book ai didi

ruby - 遍历枚举器的一部分(外部迭代器)?

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:01 24 4
gpt4 key购买 nike

如果我想要数组的一部分,我可以使用 []split:

arr = [1,2,3,4,5]
arr[1..3]
=> [2, 3, 4]

但是 [] 有一个“通用”版本吗?我可以将它应用于任何 Enumerator 吗?

enum = arr.each
enum.xxx_method(1..3) # is equal to arr[1..3].each

当然你可以直接使用arr[1..3]。但我正在寻找一种通用方法来处理任何枚举数。

最佳答案

如果您有一个枚举器,您可以依靠可枚举方法 droptake:

# abstract if necessary as enum_slice(range)
enumerator.drop(2).take(3)

如果该枚举器是一个数组,您不需要遍历它,检查方法 Array#lazy_sliceI asked to be addedenumerable_lazy关于your previous question :

require 'enumerable/lazy'

class Array
def lazy_slice(range)
Enumerator.new do |yielder|
range.each do |index|
yielder << self[index]
end
end.lazy
end
end

some_big_array = (0..10000).to_a # fake array, it won't generally be a range
p some_big_array.lazy_slice(9995..10000).map { |x| 2*x }.to_a
#=> [19990, 19992, 19994, 19996, 19998, 20000]

关于ruby - 遍历枚举器的一部分(外部迭代器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944455/

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