Что представляет собой 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 есть много итераторов:

  1. Каждый итератор
  2. Собрать итератор
  3. Итератор времен
  4. До Итератора
  5. Даунто Итератор
  6. Шаг итератор
  7. Each_Line Итератор
  8. Объяснение типов итераторов

Каждый итератор: этот итератор возвращает все элементы массива или хеша. Каждый итератор возвращает каждое значение одно за другим. Синтаксис:

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/

Другие вопросы по тегам