javascript:generator
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
javascript:generator [2009/01/18 17:32] – 外部編集 127.0.0.1 | javascript:generator [2015/10/24 04:29] (現在) – 削除 nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== ジェネレータ ====== | ||
- | FirefoxのJavaScript実装(JavaScript 1.7)にはジェネレータという機能がある。 | ||
- | |||
- | <code javascript> | ||
- | function generator() { | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | var g = generator(); | ||
- | g.next(); | ||
- | g.next(); | ||
- | g.next(); | ||
- | |||
- | </ | ||
- | yield文を含む関数を実行するとジェネレータというオブジェクトが生成される。ジェネレータのnextメソッドを呼び出すと関数が実行され、yieldが呼び出されるまで実行され、そこで処理が一時停止する。もう一度nextメソッドを呼ぶと、次のyieldまで実行される。nextを呼び出して関数の最後まで到達するとStopIterationがスローされる。 | ||
- | |||
- | |||
- | 例えば、カウンターが作れます。 | ||
- | <code javascript> | ||
- | function counter() { | ||
- | var i = 0; | ||
- | | ||
- | yield i; | ||
- | i++; | ||
- | } | ||
- | } | ||
- | |||
- | var g = counter(); | ||
- | window.alert(g.next()); | ||
- | window.alert(g.next()); | ||
- | window.alert(g.next()); | ||
- | </ | ||
- | |||
- | ジェネレータを使うにはJavaScriptのバージョンを指定する必要があるようだ | ||
- | <code html> | ||
- | <script type=" | ||
- | ... | ||
- | </ | ||
- | </ | ||
javascript/generator.1232299941.txt.gz · 最終更新: 2013/12/31 13:53 (外部編集)