En python, je peux obtenir un itérateur à partir de n'importe quel itérateur avec iter ()
; puis je peux appeler next (my_iter)
pour obtenir l'élément suivant.
Y a-t-il un équivalent dans ruby / rails?
3 Réponses :
.to_enum
donnera l'énumérateur. Pour un exemple, a.to_enum
donnera l'énumérateur et vous pouvez l'itérer à partir de là comme a.to_enum.each {| x | p x}.
Ou sans boucle, vous pouvez prendre l'élément comme
p a.to_enum.next
Mais encore une fois, cela nécessite une construction en boucle (c'est-à-dire chaque
). Comment pouvez-vous obtenir un élément d'une énumération sans cela.
Vous avez dit que vous pouvez appeler Je peux appeler le prochain (my_iter)
de même que vous pouvez le faire ici a.to_enum.next
ou vous pouvez enregistrer b = a.enum code> puis
b.next
Je vois! Merci, mais vous devriez le mentionner dans la réponse; car next
est la réponse réelle.
@mshsayem j'ai ajouté.
Il existe de nombreux itérateurs dans Ruby comme suit:
Chaque itérateur: cet itérateur renvoie tous les éléments d'un tableau ou d'un hachage. Chaque itérateur renvoie chaque valeur une par une. Syntaxe:
collection.each do |variable_name| # code to be iterate continue if condition # equivalent next in python end
Dans la syntaxe ci-dessus, la collection peut être la plage, le tableau ou le hachage.
référencé à partir de https://www.geeksforgeeks.org/ruby-types-of-iterators/
Eh bien, je ne demandais pas de boucle. Chacun des exemples là-bas nécessite en fait une boucle / bloc / proc pour obtenir n'importe quel élément.
Sans boucle:
words = %w(one two three four five) my_iter = words.each puts my_iter.next # one puts my_iter.next # two
Mais à quoi sert un itérateur qui n'est pas dans une boucle? C'est en quelque sorte leur raison d'être ...