Skip to content

Instantly share code, notes, and snippets.

@Varriount
Last active January 3, 2016 15:49
Show Gist options
  • Save Varriount/8485141 to your computer and use it in GitHub Desktop.
Save Varriount/8485141 to your computer and use it in GitHub Desktop.
# Normally, iterators must be passed all their arguments each time they are iterated over
iterator counter(start, stop:int): int {.closure.} =
var x = start
while x < stop:
yield x
inc(x)
var counterInstance = counter
echo(counterInstance(0,5))
echo(counterInstance(0,5))
echo(counterInstance(0,5))
echo(counterInstance(0,5))
echo(counterInstance(0,10))
echo(counterInstance(0,10))
echo(counterInstance(0,10))
echo(counterInstance(0,10))
# Heres a python equivalent (note the lack of explicit args each iteration)
def counter(start, stop):
x = start
while x < stop:
yield x
x += 1
counterInstance = counter(0, 5)
print(counterInstance.next())
print(counterInstance.next())
print(counterInstance.next())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment