JavaScriptのジェネレーターは、実行中に一時停止して再開できる特別なタイプの機能です。これらは、 function*
構文を使用して定義され、 yield
キーワードを使用して値と戻り値を使用します。発電機の主な使用は、値のシーケンスを表すオブジェクトであり、 next()
メソッドを使用してそのシーケンスを介してトラバーサルを可能にするイテレーターを作成することです。
ジェネレーターを使用してイテレーターを作成するには、 yield
を使用して一連の値を生成するジェネレーター関数を定義します。呼び出されると、ジェネレーター関数はイテレーターオブジェクトを返します。 next()
メソッドがこのイテレーターで呼び出されるたびに、ジェネレーター関数は次のyield
ステートメントに達するまで実行を再開し、2つのプロパティを持つオブジェクトを返します: value
(降伏値)とdone
(イテレーターが生成値を完了したかどうかを示すブール値)。
ジェネレーターを使用してイテレーターを作成する簡単な例を次に示します。
<code class="javascript">function* simpleGenerator() { yield 1; yield 2; yield 3; } const iterator = simpleGenerator(); console.log(iterator.next()); // { value: 1, done: false } console.log(iterator.next()); // { value: 2, done: false } console.log(iterator.next()); // { value: 3, done: false } console.log(iterator.next()); // { value: undefined, done: true }</code>
ジェネレーターは、JavaScriptでイテレーターを作成するために使用される場合、いくつかの具体的な利点を提供します。
yield
の使用により、反復論理のより自然な表現が可能になります。for...of
loopで直接使用でき、反復可能なシーケンスの消費を簡素化できます。JavaScriptジェネレーターを使用してカスタムイテレーターを実装することは、さまざまな実用的なシナリオで役立ちます。これは、フィボナッチシーケンスを繰り返すために使用されるジェネレーターの例です。
<code class="javascript">function* fibonacciGenerator() { let a = 0, b = 1; while (true) { yield a; [a, b] = [b, ab]; } } const fibonacciIterator = fibonacciGenerator(); console.log(fibonacciIterator.next().value); // 0 console.log(fibonacciIterator.next().value); // 1 console.log(fibonacciIterator.next().value); // 1 console.log(fibonacciIterator.next().value); // 2 console.log(fibonacciIterator.next().value); // 3</code>
別の実用的なシナリオは、行ごとの大きなファイルを読み取るなど、メモリが限られている大きなデータセットを反復することです。
<code class="javascript">function* fileLineGenerator(filePath) { const fs = require('fs'); const readline = require('readline'); const fileStream = fs.createReadStream(filePath); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity }); for await (const line of rl) { yield line; } } const lineIterator = fileLineGenerator('largeFile.txt'); // Use the iterator to process lines one by one for (const line of lineIterator) { console.log(line); }</code>
JavaScriptのジェネレーターの構文と主要な機能は、それらをイテレーターの作成に役立つものにします。
構文:
function*
キーワードを使用して定義され、関数がジェネレーターであることを示します。yield
キーワードを使用して値を生成します。 yield
関数の実行を一時停止し、呼び出し元に値を返します。主な機能:
yield
まで発電機を再開するnext()
メソッドを実装します。next()
でyield
と履歴書で実行を一時停止する能力により、ジェネレーターの流れを細かく制御できます。return
ステートメントを使用して最終値を指定することもできます。ジェネレーターがreturn
ステートメントに遭遇すると、それはtrue
に設定done
、結果オブジェクトのvalue
プロパティに返された値が含まれます。async/await
で使用できます。これらの機能を紹介する例は次のとおりです。
<code class="javascript">function* generatorExample() { try { yield 'First value'; yield 'Second value'; return 'Final value'; } catch (error) { console.error('Error caught in generator:', error); } } const iterator = generatorExample(); console.log(iterator.next()); // { value: 'First value', done: false } console.log(iterator.next()); // { value: 'Second value', done: false } console.log(iterator.next()); // { value: 'Final value', done: true } console.log(iterator.next()); // { value: undefined, done: true }</code>
これらの構文と機能により、ジェネレーターはJavaScriptでイテレーターを作成および管理するための強力なツールになります。
以上がJavaScriptのジェネレーターとは何ですか?また、どのようにしてイテレータを作成するために使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。