JSの文字列のiterator消費挙動テスト
iteratorを継続して使えるか試す
code:js
{
function* split(str) {
for (const i of str) {
if (i === "<") {
let stack = i;
for (const j of str) {
stack += j;
if (j === ">") {
yield stack;
break;
}
}
continue;
}
yield i;
}
}
}
結果
$ 'g', 'j', 'j', '<gjj<C-j>', 'C', '-', 'j', '>', '<gjj<C-j>', 'C', '-', 'k', '>', 'f', 'f' やはり、iteratorを継続して使えないようだ
新しいfor loopが始まるたびに、iteratorが再生成される
code:2.js
{
function* split(str) {
for (const i of iter) {
if (i === "<") {
let stack = i;
for (const j of iter) {
stack += j;
if (j === ">") {
yield stack;
break;
}
}
continue;
}
yield i;
}
}
}
うまくいった