如何制作一个通过其他两个枚举器进行延迟迭代的 ruby​​ 枚举器?

2023-11-25

假设我有两个枚举器,enum1 and enum2必须延迟迭代(因为它们有副作用)。如何构造第三个枚举器enum3 where enum3.each{|x| x} would lazily返回相当于enum1 + enum2?

在我的现实用例中,我正在流式传输两个文件,并且需要流式传输连接。


这似乎正是我想要的;

enums.lazy.flat_map{|enum| enum.lazy }

这是演示。定义这些产生副作用的方法;

def test_enum
  return enum_for __method__ unless block_given?
  puts 'hi'
  yield 1
  puts 'hi again'
  yield 2
end  

def test_enum2
  return enum_for __method__ unless block_given?
  puts :a
  yield :a
  puts :b
  yield :b
end  

concated_enum = [test_enum, test_enum2].lazy.flat_map{|en| en.lazy }

然后对结果调用 next,表明副作用是延迟发生的;

[5] pry(main)> concated_enum.next
hi
=> 1
[6] pry(main)> concated_enum.next
hi again
=> 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作一个通过其他两个枚举器进行延迟迭代的 ruby​​ 枚举器? 的相关文章

  • 不同金额的 Stripe 订阅计划

    我正在为一家慈善机构制作一份捐赠表格 他们要求提供每月捐赠计划 用户可以选择他们想要捐赠的任何金额 我知道我可以制定个人计划 即 如果他们说每月捐款 5 美元 10 美元或 20 美元 我可以制定三个不同的计划并向用户订阅它们 有没有办法避
  • 使用旧的 ruby​​gems 版本进行捆绑安装

    我遇到的问题似乎与1个月前的问题 https stackoverflow com questions 38279896 rubygems 2 0 14 is not threadsafe bunder install message whe
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • 验证 ActionCable 连接

    我发现了一个很棒的 ActionCable gem 它是 SPA 的一个很好的解决方案 我只想发送html css and js资产 所有其他连接将通过ActionCable 交换字符串或者整数并不难 但是如何通过ActionCable登录
  • GitHub API:标记提交所属(与 git describe --tag 并行)

    我正在使用 GitHub API 进行实验octokit https github com octokit octokit rb红宝石 我的目标是能够提取提交 SHA 所属的 标签 现在我可以使用命令行轻松地执行此操作 gt git des
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • gets、gets.chomp 和 gets.chomp 之间的区别!?

    这三者有什么区别 gets 它得到一行带有 n gets chomp 它得到一行 但删除 n 那是对的吗 关于什么gets chomp gets http www ruby doc org core 2 1 0 Kernel html me
  • Ruby 中多维数组的帮助

    我有以下代码将字符串拆分为 3 个字节的组 str hello ix 0 iy 0 bytes tby str each byte do c if iy 3 iy 0 bytes ix tby each index do i bytes i
  • 有没有人有 Ruby 和 Rake 的 Notepad++ 函数列表插件的解析规则

    我使用 Notepad 编辑 rake 文件 并且希望能够使用函数列表插件 我无法在线找到任何解析规则 并且 语言解析规则 对话框没有非常清晰的记录 我正在将方法解析到以下列表中 但还想显示任务 Function Begin t def t
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • 如何从 Rails 中的 date_select 或 select_date 获取日期?

    Using select date给我回一个params my date with year month and day属性 如何轻松获取 Date 对象 我希望有类似的事情params my date to date 我很高兴使用date
  • 如何从 ruby​​ 中的字符串名称创建类实例?

    我有一个类的名称 我想创建该类的一个实例 以便我可以循环该类的架构中存在的每个 Rails 属性 我该怎么做呢 我的名称是我想要检查的类的字符串 我想我需要实例化一个类实例 以便我可以 循环遍历它的属性并打印它们 在 Rails 中你可以这
  • Rails 4:资产未在生产中加载

    我正在尝试将我的应用程序投入生产 但图像和 CSS 资源路径不起作用 这是我目前正在做的事情 图像资源位于 app assets images image jpg 样式表位于 app assets stylesheets style css
  • ruby 中的 #encode 和 #force_encoding 有什么区别?

    我真的不明白之间的区别 encode and force encoding在 Ruby 中String班级 我明白那个 kam force encoding UTF 8 将迫使 kam 是UTF 8编码 但是怎么样 encode encod
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 已定义方法的 Ruby 钩子?

    我一直在谷歌上搜索这个问题 但找不到答案 这让我认为答案是否定的 但我想我会在这里问 以防有人确切知道 Ruby 是否有一个钩子来定义方法 即在模块或类上 如果没有 是否有人足够熟悉该实施的情况main对象以了解它到底如何将方法复制到Obj
  • 在 ruby​​ 中下载多个 FTP 文件,如 d*.txt

    我需要连接到 ftp 站点并下载一堆名为 D txt 的文件 最多 6 个 你能帮我用 Ruby 编写这个代码吗 下面的代码只是 ftp Net FTP new ftp server site ftp login user pwd ftp
  • 我无法让 ruby​​ 开发工具包适用于 Windows XP

    所以 我一生都无法让它正常工作 我的最终目标是安装 dbd odbc gem 并使其正常工作 从我读过的多篇文章来看 我需要安装ODBC 绑定 http www ch werner de rubyodbc 对于 ruby 以及 dbd od
  • ruby从1.8.7升级到1.9.2(使用Rails 3.1.1)后本地服务器错误

    我刚刚安装了rvm并使用rvm将ruby从1 8 7升级到1 9 2 我在我的应用程序上运行了捆绑安装 它重新安装了我的 gems 当我在本地运行 Rails 服务器并将浏览器导航到 localhost 3000 时 服务器日志中显示以下错
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开

随机推荐

  • Javascript 谷歌音译 API 未通过 https 提供服务

    JavaScript 谷歌音译 API 不通过 h ttps 提供服务 我遇到了混合内容错误 它可以在 http 网站上运行 但不能在 https 上运行 我尝试通过以下所有方式调用 API
  • WinForms 的 C# 中动态变量名称的使用

    不确定最好的表达方式是什么 但我想知道是否可以在 C 3 5 中完成动态变量名称访问 这是我目前正在寻求 智能 或通过循环变得更加优雅的代码 private void frmFilter Load object sender EventAr
  • 在jsp中访问javascript中的会话变量

    我需要为 google API 表提供数据 所以我将其从 servlet 发送到 JSP 但是我如何在 googles javascript中访问这些数据 我将提供另一个 JS 的示例 非常简单 只是为了让我学习如何制作主题所说的内容
  • 在 Docker 容器中找不到 Chromedriver 可执行路径

    我使用下面的 Docker 文件创建了一个 docker 映像 它安装最新版本的 Google Chrome 和 Chrome 驱动程序 以及其他 pip 包 Dockerfile FROM python 3 9 Install Chrom
  • 从 iPhone 打开 Google 地图并显示路线

    我想知道如何从 iPhone 应用程序打开 Google 地图 以便 Google 地图在您到达网页时显示路线 今天我使用的代码是only显示坐标 NSString latlong NSString stringWithString 59
  • ScrollView 内的 ViewPager 无法正确滚动

    我有一个 页面 上面有许多组件 并且其中的内容比设备的高度长 好吧 只需将所有布局 整个页面 放入一个ScrollView 没问题 其中一个组件是ViewPager 这可以正确渲染 但对滑动 猛击的响应无法正确执行 它很紧张并且并不总是有效
  • IE10选择框问题

    我在 IE10 中测试我的应用程序 发现选择框有一个奇怪的行为 所选选项会突出显示 上方 下方选项会显示在所选选项的上方 下方 下拉框被隐藏 这只发生在 IE10 中 在所有其他浏览器中 选项显示在选择框下方 在 IE10 和 IE9 中尝
  • 为什么我收到此错误:ConnectionString 属性尚未初始化

    我已经搜索并尝试了一切 但无法弄清楚这一点 我想做一些简单的事情 但似乎我做错了 基本上 任何已存款的用户 我想返回 true 如果没有 我想返回 false 我想这应该很容易 但我对此感到困惑 这是错误 ConnectionString
  • ECR事件后触发AWS lambda函数

    我试图让 AWS Lambda 函数在将新映像推送到 AWS 容器注册表时运行 我已经创建并测试了该功能 该功能运行良好 然后 我使用以下模式创建了一个简单的 CloudWatch 事件规则 source aws ecr 我相信 ECR 的
  • WiX 安装程序在卸载时不会删除文件

    我告诉 wix MSI 文件在卸载时删除文件 但它根本没有注册它 对于捆绑包 我将 MSI 文件称为
  • 选择和悬停覆盖 SWT 表组件中的单元格背景颜色

    我正在使用 SWT 和 Eclipse RCP 来呈现表格 我的问题是 如果我更改单元格 实际上是 ViewerCell 的背景 我可以看到它具有新的颜色 我的问题是 如果我在表中选择一行 或者将鼠标悬停在包含相关单元格的行上 则选择 悬停
  • 如何将两个列表合并为一个列表?

    I have a 1 2 b a b I want c 1 a 2 b j for i in zip a b for j in i
  • 如何在 Django/python 中每行循环三列?

    我想在 for 期间显示数据 每行三列 我希望我的结果如下所示 table tr td VALUE1 td td VALUE2 td td VALUE3 td tr tr td VALUE4 td lt td VALUE5 td td VA
  • 如何在 Swift 中制作引脚注释标注?

    我试图让标注工作 但没有发生 因为我在准备继续时做错了 我想知道如何能够对另一个视图进行引脚注释标注 当点击标注中的按钮时 跳转到另一个场景的过程如下 Set the delegate地图视图作为视图控制器 您可以在 Interface B
  • 包含所有私有成员的类可以是 POD 类吗?

    我之前听说过 POD 类型不能有私有数据 但根据 C 0x 草案 我的要求更宽松 强调我的 has the 相同的访问控制 第 11 条 对于所有非静态数据成员 这似乎表明私有数据只要是私有的就可以 我没有 C 03 的副本来检查 那么 W
  • 在完整框架 4.7 项目上添加对 .NET Core 2.0 DLL 的引用

    我在这里寻找这个问题但没有找到答案 我有一个针对 NET Core 2 0 的类库项目和一个针对 NET Full Framework 4 7 的 WPF 项目 我无法引用 WPF 项目上的类库 我收到以下错误 项目 xxxxxxxx 的目
  • 如何使用 IIS7 修复 CSS 文件内链接的 URL 重写

    我正在尝试为家里的朋友设置代理服务器 我目前正在关注网站上的教程 http blogs iis net carlosag archive 2010 04 01 setting up a reverse proxy using iis url
  • 将 NSTimer 的触发时间重置为从现在开始而不是上次触发

    我有一个NSTimer以 3 秒的间隔触发以减少值 当我执行增加该值的操作时 我想重新启动计时器 从该点开始计时 3 秒 例如 如果我增加该值并且计时器将在 1 秒内触发 我想更改它并让计时器在 3 秒内触发 我可以使计时器无效并重新创建它
  • 从Python中独立于操作系统的位置加载配置文件

    在Linux下我把我的配置放在 programname 中 我应该将其放置在 Windows 中的什么位置 在 python 中打开独立于操作系统的配置文件的推荐方法是什么 谢谢 内森 在 Windows 上 您将其存储在os enviro
  • 如何制作一个通过其他两个枚举器进行延迟迭代的 ruby​​ 枚举器?

    假设我有两个枚举器 enum1 and enum2必须延迟迭代 因为它们有副作用 如何构造第三个枚举器enum3 where enum3 each x x would lazily返回相当于enum1 enum2 在我的现实用例中 我正在流