はじめに
この実験では、JavaScript におけるジェネレータの概念を探ります。具体的には、特定の条件が満たされるまで新しい値を生成するジェネレータ関数を作成する方法を学びます。実際のコーディング演習を通じて、ジェネレータがどのように機能するか、およびコードを簡略化して性能を向上させるためにどのように使用できるかをより深く理解します。
与えられた条件が満たされるまで値を生成する
コーディングの練習を始めるには、ターミナル/SSH を開いて node と入力します。その後、与えられた条件が満たされるまで新しい値を生成するジェネレータを作成できます。
このジェネレータを作成するには、次の手順に従います。
seed値を使用して現在のvalを初期化します。condition関数に現在のvalを渡して呼び出したときにfalseを返す間、whileループを使用して反復処理を続けます。yieldキーワードを使用して現在のvalを返し、任意で新しいシード値nextSeedを受け取ります。next関数を使用して、現在のvalとnextSeedから次の値を計算します。
以下はコードの例です。
const generateUntil = function* (seed, condition, next) {
let val = seed;
let nextSeed = null;
while (!condition(val)) {
nextSeed = yield val;
val = next(val, nextSeed);
}
return val;
};
適切な引数を使用してジェネレータを呼び出すことで使用できます。たとえば:
[
...generateUntil(
1,
(v) => v > 5,
(v) => ++v
)
]; // [1, 2, 3, 4, 5]
これは、val が 6 に等しくなったときに条件 v > 5 が満たされるため、1 から 5 までの値の配列を生成します。
まとめ
おめでとうございます!「条件が満たされるまで生成する」実験を完了しました。LabEx でさらに多くの実験を行って、スキルを向上させることができます。