#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 есть много итераторов следующим образом:
- Каждый итератор
- Собрать итератор
- Итератор времен
- До итератора
- Итератор Downto
- Пошаговый итератор
- Итератор 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 /
Комментарии:
1. Ну, я не просил о циклировании. Для каждого из приведенных там примеров на самом деле требуется цикл / блок / процедура для получения любого элемента.