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 · 最終更新: (外部編集)