for i in range(10):
print(i)
#Cool
/**
* @param {...number} args
*/
const range = (...args) => {
const rangeGen = function* (from = 0, to = Infinity, step = 1) {
for (let v = from; v < to; v += step) {
yield v;
}
};
return args.length === 0
? rangeGen(undefined, undefined, undefined)
: args.length === 1
? rangeGen(undefined, args[0], undefined)
: args.length === 2
? rangeGen(args[0], args[1], undefined)
: rangeGen(...args);
};
for (const v of range(2, 10)) {
console.log(v);
// 2 ~Jusqu'à 9 sont émis dans l'ordre
}
La fonction range
renvoie le résultat de l'exécution de la fonction générateur. C'est un wrapper qui distribue simplement les arguments à la fonction de générateur.
«rangeGen» est la fonction du générateur.
―― Qu'est-ce qu'un générateur? --Une fonctionnalité relativement nouvelle de JavaScript ajoutée dans ES2015 ―― Que générez-vous? --Générer des objets répétables ―― Qu'est-ce que la répétition?
for-of
--Synthèse étendue (... iterator
)const [hoge, huga] = iterator;
)
--Il est. Peut-être
―― N'est-ce pas un tableau?
--Peut gérer l'infiniPour plus de détails sur l'utilisation de la fonction de générateur, veuillez lire MDN.
Pour le moment, je fais un gars qui peut énumérer les nombres de «de» à »à».
Maintenant vous pouvez aussi for (const i of range (10)) {
en JavaScript.
Personnellement, la semelle de Python est gênante car il faut faire attention à l'ordre des arguments. Donc ci-dessous (TypeScript).
const range = function* ({
start = 0,
stop = Infinity,
step = 1,
}: {
start?: number;
stop: number;
step?: number;
}) {
while (start < stop) {
yield start;
start += step;
}
};
for (const v of range({ stop: 10 })) {
console.log(v);
}
c'est tout.
Recommended Posts