ユーザ用ツール

サイト用ツール


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 (外部編集)