Каков рубиновый эквивалент iter() / next() в Python?

#ruby #ruby-on-rails-5 #ruby-2.6

#ruby #ruby-on-rails-5 #ruby-2.6

Вопрос:

В python я могу получить итератор из любого итерируемого с помощью iter() ; и затем я могу вызвать next(my_iter) , чтобы получить следующий элемент.

Есть ли какой-либо эквивалент в ruby / rails?

Ответ №1:

.to_enum приведет к перечислению. Для примера a.to_enum будет получен перечислитель, и вы можете повторить его оттуда, например a.to_enum.each{|x| p x}.

Или без цикла, вы можете взять элемент, подобный

 p a.to_enum.next
  

Комментарии:

1. Но опять же, для этого требуется циклическая конструкция (т. Е. each ). Как вы можете получить элемент из перечисления без этого.

2. Вы сказали, что можете вызвать, I can call next(my_iter) то же самое можно сделать здесь a.to_enum.next , или вы можете сохранить b=a.enum , а затем b.next

3. Я вижу! Спасибо, но вы должны упомянуть это в ответе; потому что next это фактический ответ.

4. @mshsayem я добавил.

Ответ №2:

Без цикла:

 words = %w(one two three four five)

my_iter = words.each

puts my_iter.next  # one
puts my_iter.next  # two
  

Но в чем смысл итератора, который не находится в цикле? Это своего рода весь смысл их существования…

Ответ №3:

В Ruby есть много итераторов следующим образом:

  1. Каждый итератор
  2. Собрать итератор
  3. Итератор времен
  4. До итератора
  5. Итератор Downto
  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 /

Комментарии:

1. Ну, я не просил о циклировании. Для каждого из приведенных там примеров на самом деле требуется цикл / блок / процедура для получения любого элемента.