【发布时间】:2019-11-28 01:11:59
【问题描述】:
问题:
是否可以像 compose 那样将两个生成器组合成一个生成器?
function* type(vals) {
for(const v of vals) {
yield v;
}
}
const bool = type([true, false]);
const str = type([
'',
undefined,
'Lorem',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'????????????????'
]);
const composeGenerator = () => {/*???*/};
const input = composeGenerator(bool,str);
console.log(input, 'yes');
for (const i of bool) {
console.log(i); // true, false
}
for (const i of str) {
console.log(i); // '', undefined, 'Lorem', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', '????????????????'
}
for (const i of input) {
console.log(i); // '', undefined, 'Lorem', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', '????????????????', true, false
}
【问题讨论】:
-
您的预期输出也按照
[...str, ...bool]的顺序排列,但您的参数按照bool, str的顺序排列。这是故意的吗? -
@PatrickRoberts 任何一个顺序都可以……有时候,撰写是正确的。但我无动于衷
-
在函数组合中,您将一个函数的结果作为参数传递给另一个函数。您的生成器函数不接受任何参数,所以这没有任何意义吗?您想要的输出(
input可迭代)看起来更像是一个简单的连接。 -
您可以简单地将生成器或任何可迭代对象与iter-ops library 连接起来;)
标签: javascript ecmascript-6 generator iterable