Iterable
by Arnaud Buchholz
JavaScript
function closureRange (from, to) {
let current = from
const iterable = {}
iterable[Symbol.iterator] = function () {
return {
next: function () {
const value = current
const done = current > to
++current
return {Â done, value }
}
}
}
return iterable
}
function *generatorRange (from, to) {
for (let current = from; current <= to; ++current) {
console.log('step ', current)
yield current
}
}
/* console.log('closureRange', closureRange(1, 5)) */
console.log('generatorRange', [...generatorRange(1, 5)])
const iterator = generatorRange(1, 5)
console.log(iterator)
console.log('first value', iterator.next())
console.log('second value', iterator.next())
for (let variable of object)