Según la documentación de Ruby, el objeto Enumerator usa el método each
(enumerar) si no se proporciona un método de destino para los métodos to_enum
o enum_for
. Ahora, tomemos el siguiente parche mono y su encuestador, como un ejemplo¿Cómo itera el objeto Ruby's Enumerator externamente sobre un iterador interno?
o = Object.new
def o.each
yield 1
yield 2
yield 3
end
e = o.to_enum
loop do
puts e.next
end
Teniendo en cuenta que el objeto enumerador utiliza el método each
de responder cuando next
se llama, cómo hacer llamadas a la mirada each
método similar, cada vez next
se llama? ¿La clase Enumeartor carga todos los contenidos de o.each
y crea una copia local para la enumeración? ¿O hay algún tipo de magia Ruby que cuelga las operaciones en cada declaración de rendimiento hasta que se llame al next
en el enumerador?
Si se realiza una copia interna, ¿es una copia profunda? ¿Qué pasa con los objetos de E/S que podrían usarse para la enumeración externa?
Estoy usando Ruby 1.9.2.
Para que lo sepas, utiliza comillas invertidas (\ ') alrededor del texto que ver código en línea el formato':) ' –
muchas gracias! Lo tendremos en cuenta para la próxima vez. –