Что представляет собой Ruby-эквивалент Python iter()/next()?
В python я могу получить итератор из любого итератора с iter()
; а потом я могу позвонитьnext(my_iter)
чтобы получить следующий элемент.
Есть ли аналог в ruby /rails?
3 ответа
.to_enum
даст счетчик. Для примераa.to_enum
даст перечислитель, и вы можете перебирать его оттуда, например a.to_enum.each{|x| p x}.
Или без цикла вы можете взять такой элемент, как
p a.to_enum.next
Без петли:
words = %w(one two three four five)
my_iter = words.each
puts my_iter.next # one
puts my_iter.next # two
Но в чем смысл итератора, не входящего в цикл? В этом весь смысл их существования...
В Ruby есть много итераторов:
- Каждый итератор
- Собрать итератор
- Итератор времен
- До Итератора
- Даунто Итератор
- Шаг итератор
- 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/