def test():
for i in range(0,3):
yield i
x = test()
for i in x:
print i
Einen ähnlichen Effekt kann man unter Ruby mit Enumeratoren hinkriegen
class Test
def each
if block_given?
for i in 0...3
yield i
end
else
Enumerator.new(self)
end
end
end
t = Test.new
e = t.each
for i in e
puts i
end
Ich gebe zu das ich hier ziemlich geschummelt habe und Python Generatoren über das hinausgehen was ich hier in Ruby zeige. Aber es kann hin und wieder mal recht praktisch sein ;)
Keine Kommentare:
Kommentar veröffentlichen