问题描述
在python中,我可以使用iter()
从任何可迭代的迭代器中获取一个迭代器;然后我可以调用next(my_iter)
来获取下一个元素。
在红宝石/铁轨中是否有等同物?
解决方法
.to_enum
将产生枚举数。例如,a.to_enum
将产生枚举数,您可以像a.to_enum.each{|x| p x}.
那样从那里进行迭代
或者没有循环,您可以采用类似
的元素p a.to_enum.next
,
Ruby中有许多迭代器,如下所示:
- 每个迭代器
- 收集迭代器
- Times迭代器
- 最多迭代器
- 向下迭代器
- Step Iterator
- Each_Line迭代器
- 解释迭代器的类型
每个迭代器:此迭代器返回数组或哈希的所有元素。每个迭代器一个一个地返回每个值。 语法:
collection.each do |variable_name|
# code to be iterate
continue if condition # equivalent next in python
end
按照上述语法,集合可以是范围,数组或哈希。
引用自https://www.geeksforgeeks.org/ruby-types-of-iterators/
,没有循环:
words = %w(one two three four five)
my_iter = words.each
puts my_iter.next # one
puts my_iter.next # two
但是没有循环的迭代器有什么意义呢?这是他们整个 raison d'etre ...