読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

"yield*"記法は変数をバラして渡す事ができる

javascript/node.js

"yield*"記法はforeachでぶん回せるような変数をバラして次の関数に渡す事ができます。

実際のところ

具体例として、フィボナッチ数列をジェネレータ関数で実装するケースを考えてみます。
記述する際の利用法は以下の(1)(2)の通り。

'use strict';

function* fibonacci() { 
  let o = [0, 1, 1]; // (1)
  yield* o;          // (2)
  while (true) {
    o[0] = o[1];
    o[1] = o[2];
    o[2] = o[0] + o[1];
    yield o[2];
  }
}

for (var n of fibonacci()) {
  console.log(n);
  if (n >= 1000) break;
}
/*
0
1
1
2
3
5
...
987
1597
*/

ここで、この記法を知らないと(2)の部分が以下の様な感じの実装になってしまいますね。

   for (let val of o) { yield val; } // (2)'