Ein Enumerator kann in einem faulen enumerator umgewandelt werden unter Verwendung von Enumerator::Lazy.new wie folgt aus (dies ist ein Beispiel, am Anfang, habe ich bereits einen Enumerator haben, kein Array):Convert enumerator zu faul enumerator
xs_enum = [1, 2, 3].to_enum
# => #<Enumerator: [1, 2, 3]:each>
xs_lazy_enum = Enumerator::Lazy.new(xs_enum, &:yield)
# => #<Enumerator::Lazy: #<Enumerator: [1, 2, 3]:each>:each>
xs_lazy_enum.force
# => [1, 2, 3]
Ist gibt es eine prägnantere Art, es zu tun?
Dank, gibt es einige subtility hier, sind die Ausgabe Ihres Schnipsel und meine etwas anders: '=> #> 'vs' # : jedes> '. Ich werde das Beispiel in der Frage ändern. –
tokland
Sie haben Recht! Am Ende ist dieser Unterschied nicht relevant, wenn der Enumerator verwendet wird, also ist ein einfacher "enum.lazy" der richtige Weg. – tokland
Sehr gute Antwort auf eine interessante Frage. Beginnen Sie Ihre Antwort einfach mit der Zeile 'enum = (1..10) .each'. –