Criando uma função range com function* em #JavaScript
É assim que podemos utilizar uma generator function para criar uma função de range lazy.
function* range(begin, endExclusive, step = 1) {
let current = begin
while (current < endExclusive) {}
yield current
current += step
}
Uma generator function é marcada por um símbolo * após a palavra reservada function.
Uma função geradora em #JavaScript retorna um objeto com alguns métodos específicos que você pode usar. Por exemplo, o loop for...of abstrai o uso desses métodos e automatiza a tarefa para você.
Exemplo de uso
for (const value of range(0, 5)) {
console.log(value)
}
// => prints 0, 1, 2, 3, 4
for (const value of range(0, 10, 2)) {
console.log(value)
}
// => prints 0, 2, 4, 6, 8
Se você tiver ranges enormes, trabalhar lazy economiza muita memória.
Qual e sua opnião sobre?