En materia de desarrollo de software un iterador (iterator) es el objeto que permite a un programa recorrer un contenedor (una colección de elementos), especialmente listas.
Normalmente el contenedor a través de su interfaz expone la semántica necesaria para hacerlo. El primer lenguaje de programación en utilizar los iteradores fue CLU, en 1974. A día de hoy es una técnica muy utilizada y está presente también en Typescript desde el lanzamiento de ES6.
En Typescript expone tres métodos:
* next: Para pasar al siguiente dato.
* return: Para devolver el dato.
* throw: Para devolver un error.
El iterador siempre funciona de manera síncrona.
Os pongo un ejemplo de como utilizarlo. Creamos primero la función para utilizar la iteración:
function makeRangeIterator(start = 0, end = Infinity, step = 1) {
let nextIndex = start;
let iterationCount = 0;
const rangeIterator = {
next: function() {
let result;
if (nextIndex < end) {
result = { value: nextIndex, done: false }
nextIndex += step;
iterationCount++;
return result;
}
return { value: iterationCount, done: true }
}
};
return rangeIterator;
}
Y aquí como utilizarlo en nuestro proyecto:
const it = makeRangeIterator(1, 10, 2);
let result = it.next();
while (!result.done) {
console.log(result.value); // 1 3 5 7 9
result = it.next();
}
console.log("Iteración sobre secuencia: ", result.value); // [5 numbers devueltos que tomaron el intervalo entre: 0 a 10]
Espero que os sea de utilidad ^_^.
Normalmente el contenedor a través de su interfaz expone la semántica necesaria para hacerlo. El primer lenguaje de programación en utilizar los iteradores fue CLU, en 1974. A día de hoy es una técnica muy utilizada y está presente también en Typescript desde el lanzamiento de ES6.
En Typescript expone tres métodos:
* next: Para pasar al siguiente dato.
* return: Para devolver el dato.
* throw: Para devolver un error.
El iterador siempre funciona de manera síncrona.
Os pongo un ejemplo de como utilizarlo. Creamos primero la función para utilizar la iteración:
function makeRangeIterator(start = 0, end = Infinity, step = 1) {
let nextIndex = start;
let iterationCount = 0;
const rangeIterator = {
next: function() {
let result;
if (nextIndex < end) {
result = { value: nextIndex, done: false }
nextIndex += step;
iterationCount++;
return result;
}
return { value: iterationCount, done: true }
}
};
return rangeIterator;
}
Y aquí como utilizarlo en nuestro proyecto:
const it = makeRangeIterator(1, 10, 2);
let result = it.next();
while (!result.done) {
console.log(result.value); // 1 3 5 7 9
result = it.next();
}
console.log("Iteración sobre secuencia: ", result.value); // [5 numbers devueltos que tomaron el intervalo entre: 0 a 10]
Espero que os sea de utilidad ^_^.
Comentarios