Ich habe diesen einfachen Code einen faulen Array zu erzeugen:Rubinius: Wie man Enumerator als den offiziellen Weg generiert?
lazy_arr = Enumerator.new { |y|
i = 1
loop {
y << i
i+=1
}
}
p lazy_arr.take(5)
In offiziellen Ruby-1.9.3, ist der Ausgang [1,2,3,4,5]
, das, was ich will.
Aber in Rubinius gibt es Fehler und sagt mir kann Enumerator Konstante nicht finden.
So sah ich es auf, und Enumerator in Enumerable
Modul statt kernel
definiert finden, und wenn es erzeugt wird, braucht es einige Argumente in den Klammern: http://rubydoc.info/github/evanphx/rubinius/master/Enumerable/Enumerator
Ich versuchte Enumerator.new
zu Enumerable::Enumerator.new
zu ändern, oder include Enumerable
funktioniert nicht, weil es mehr Argumente benötigt.
Wie kann ich das obige Beispiel in Rubinius machen? Gibt es irgendeinen Weg, um den Code sowohl bei Rubinius als auch bei Official funktionieren zu lassen?
Großartig. Es funktioniert jetzt :) – texasbruce