JavaScriptにおけるジェネレーター内のループ
ジェネレーター内部ではループを使用できます。
このとき、yieldを使用してループを一時停止することができます。
例を見てみましょう。各イテレーションでループを一時停止します:
javascriptfunction *func() {
for (let i = 1; i <= 3; i++) {
yield i;
}
}
イテレーターを取得します:
javascriptlet iter = func();
私たちのイテレーターの動作を確認しましょう:
javascriptconsole.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
Задание 1
毎回の呼び出しで10から0までの数字を返すイテレーターを作成してください。
Задание 2
数字をパラメータとして受け取るジェネレーターを作成してください。 イテレーターが呼び出されるたびに、ゼロに達するまで数字を1つずつ減らしていきます。
Задание 3
数字をパラメータとして受け取るジェネレーターを作成してください。 イテレーターが呼び出されるたびに、数字が1未満になるまで、数字を半分に減らして結果を返します。
Задание 4
毎回の呼び出しで次の2の累乗を返すイテレーターを作成してください。
Задание 5
毎回の呼び出しで次のフィボナッチ数を返すイテレーターを作成してください。