javascript:generator
文書の過去の版を表示しています。
ジェネレータ
FirefoxのJavaScript実装(JavaScript 1.7)にはジェネレータという機能がある。
function generator() { window.alert("開始"); yield; window.alert("途中"); yield; window.alert("終了") } var g = generator(); g.next(); // 「開始」と表示 g.next(); // 「途中」と表示 g.next(); // 「終了」と表示され、StopIterationがスローされる。
yield文を含む関数を実行するとジェネレータというオブジェクトが生成される。ジェネレータのnextメソッドを呼び出すと関数が実行され、yieldが呼び出されるまで実行され、そこで処理が一時停止する。もう一度nextメソッドを呼ぶと、次のyieldまで実行される。nextを呼び出して関数の最後まで到達するとStopIterationがスローされる。
例えば、カウンターが作れます。
function counter() { var i = 0; while(true) { yield i; i++; } } var g = counter(); window.alert(g.next()); // 0 window.alert(g.next()); // 1 window.alert(g.next()); // 2
ジェネレータを使うにはJavaScriptのバージョンを指定する必要があるようだ
<script type="text/javascript;version=1.7"> ... </sctipt>
javascript/generator.1232299941.txt.gz · 最終更新: 2013/12/31 13:53 (外部編集)