javascript - 是否可以像普通函数一样组合生成器函数
问题描述
问题:是否可以像您那样将两个生成器组合成一个生成器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
}
解决方案
首先,您的type
功能实际上可以缩短。composeGenerator
其次,这是您从左到右的一种可能实现:
function * type (iterable) {
yield * iterable;
}
const bool = type([true, false]);
const str = type([
'',
undefined,
'Lorem',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
''
]);
function * composeGenerator (...iterables) {
for (const iterable of iterables) yield * iterable;
}
const input = composeGenerator(str, bool);
for (const i of input) {
console.log(i);
}
推荐阅读
- r - 计算尺寸为 25000 x 25000 In R 的矩阵的逆矩阵
- tableau-api - 从 tableau 服务器更改参数时自动更新提取的数据源
- angular - 标题中出现错误“访问控制允许来源”
- java - java - 返回带有开关盒的字符串
- php - 如何获取上传路径
- android - 如何使用 Navigation Comp 为 Fragment 启用 Backstack。库
- java - 如何使用java将https put请求发送到其主体中具有json内容的特定主机?
- web-scraping - 无法使铬按钮(python)
- spring - 如何仅将一些信息保存到 .log 文件
- hyperledger-fabric - 当从 Fabric 客户端应用程序提交事务时,哪个对等 SDK 将实际提交事务到网络?