ruby - 延迟迭代数组

2024-03-30

我想迭代数组的一部分。例如,我尝试打印除第一个元素之外的每个元素:

array[1..-1].each {|e| puts e}

But array[1..-1]建立一个新的Array。如果array非常巨大。另一种简单的方法:

(1...array.size).each { |i| puts array[i] }

有用。但我想知道是否有一些更优雅的技巧。


Ruby 2.0 即将发布惰性枚举 http://bugs.ruby-lang.org/issues/4890(好消息!),现在我们可以使用宝石来预热引擎,例如可枚举惰性 https://github.com/yhara/enumerable-lazy:

require 'enumerable/lazy'
xs.lazy.drop(1).each { |x| puts x }

这还不错,但从概念上讲,它并不完全适用于您的情况,因为您已经有一个数组,而不是一个必须遍历才能丢弃元素的惰性对象(链接列表)(好吧,我们只是在这里丢弃一个元素,这不会破坏交易)。所以你可以将你的解决方案(使用范围的那个)抽象为Enumerable#each_from(start_index)如果你打算经常使用它。

更多:您还可以创建一个扩展可枚举惰性 Array#lazy_slice(range),这将返回一个Enumerable#lazy目的。它看起来也很不错:xs.lazy_slice(1..-1).each { |x| puts x }

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

ruby - 延迟迭代数组 的相关文章

随机推荐

  • MATLAB 中的嵌套 for 循环非常慢(预分配)

    我正在尝试学习 MATLAB 遇到的第一个问题是从静态相机和移动物体的图像序列中猜测背景 首先 我只想对一段时间内的像素进行平均值或中位数 所以它是我想将一个函数应用于 4 维数组的其中一行 我已将 RGB 图像加载到具有以下尺寸的 4 维
  • 解释并举例说明“get”、“delete”、“post”、“put”、“options”、“patch”、“head”方法?

    我正在写一个网络服务 有人可以解释一下上述方法并给我一些例子吗 感谢您的帮助 GET应该用来检索数据没有其他效果 但是您可以在 url 中使用查询参数来使用 get 发布数据 但这不是一个安全的方法 The POST方法用于请求源服务器接受
  • PairGrid 上的 Seaborn 相关系数

    是否有 matplotlib 或 seaborn 图可以与 g map lower 或 g map upper 一起使用来获取每个二元图显示的相关系数 如下所示 plt text 是手动映射以获得下面的示例 这是一个繁琐的过程 您可以将任何
  • 是否可以使用 HTML/CSS 进行简单计算,但无需 JavaScript 或后端?

    许多 Webview 插件 例如 Android Webview 的默认行为是禁用 JavaScript 执行 在这些情况下 是否仍然可以执行简单的计算 例如 将文本框中的两个数字相加 而不使用任何 JavaScript 代码 仅使用纯 H
  • 如何动态生成blazor的@bind-Value?

    我正在使用 Blazor 我想创建一个动态生成的表单 它是网格的一部分 数据的实体类型被传递到网格 这是表单的基础 我现在面临的问题是 bind Value 需要它才能编辑给定的实体 I use Blazor表带 https blazors
  • 如何本地化reverseGeocodeLocation的地址结果?

    我的 iPhone 应用程序应该根据用户的纬度和经度解析地址 verseGeocodeLocation 工作正常 但结果是英文的 有没有办法将结果本地化为其他语言 在苹果或其他地方找不到任何有关它的信息 我使用的代码是 CLGeocoder
  • 我熟悉 Ruby /DL,但不确定如何使用具有返回参数指针的 C 函数调用

    我在这个模块中有这个功能 require dl require dl import module LibCalendars extend DL Importer dlload cal2jd o extern int iauCal2jd in
  • 如何在 Android 中清除 Realm 中的数据库

    我想在用户按下注销按钮时清除整个数据库 并在另一个用户登录时加载新数据 我尝试了很多解决方案 例如 try Realm deleteRealm realmConfiguration catch Exception ex throw ex A
  • 具有默认方法的接口何时初始化?

    在搜索 Java 语言规范来寻找答案时这个问题 https stackoverflow com questions 23093470 java order of initialization and instantiation 230934
  • python 对二维列表进行排序

    我有一个像这样的二维列表 a 42 206 45 40 45 205 46 41 46 205 47 40 47 202 48 40 48 202 49 38 实际上这些是二维欧几里得空间中的坐标 我想以接近点按顺序排列的方式对其进行排序
  • 用Maven项目的源代码生成具有Maven目录结构的jar?

    我有一个使用 Maven 构建的 Web 应用程序 但我想用maven项目生成一个具有正确maven目录结构的JAR 我试过this http www sonatype com people 2010 01 how to create tw
  • 无法挤压 dim[1],预期维度为 1,得到 499

    我正在尝试制作一个自动编码器 但遇到了上述错误 查看 Stack Exchange 上的其他帖子并没有帮助 这是完整的错误 InvalidArgumentError Can not squeeze dim 1 expected a dime
  • 为什么在 AngularJs 中创建组件时使用方括号表示法

    当我们创建控制器 服务等组件时 AngularJs 中的方括号有什么用 我在示例中看到了 ngRoute ngFileUpload 它有什么用呢 它是角度依赖注入的定义方式 因此您可以在不破坏源代码的情况下丑化它 例如 控制器可以定义两个依
  • 如何按顺序执行jquery函数?

    正如标题所说 如何维护 控制Jquery中函数的执行顺序 我知道我们可以通过建立许多事件处理程序addEventListener 但不能保证它们的执行顺序 让我引用一下 请注意 即使处理程序按照它们的顺序触发 成立后 该订单不受标准保证 测
  • 如何使用 Jest 测试输出是随机的函数?

    如何使用 Jest 测试输出是随机的函数 像这样 import cuid from cuid const functionToTest value gt cuid a Math random b new Date toString c va
  • 使用 XmlSerializer 和 WCF SOAP 添加根 xmlns

    我有一个由客户从第三方提供的 XML 架构文档生成的类文件 我应该能够将这个生成的类用于客户的 SOAP Web 服务 但我遇到了一些问题 我创建了一个ServiceContract接口 这样我就可以使用 WCFChannelFactory
  • 当有多个 IP (.NET) 时选择 HTTP 请求使用哪个 IP

    我正在编写一个 NET 程序 它将在具有多个 IP 地址的计算机上运行 该程序向给定的网址发出 HTTP 请求 我想选择我使用的IP地址 这样我就可以确定哪个IP地址将出现在其他服务器的日志上 建议 我相信你可以通过提供一个来强制本地端点B
  • 如何阻止 VS Code 在控制台中截断 Python 数据?

    我正在使用 Python 在 VS Code 中打开一个 csv 文件 你的基本csv import 我知道完整的 csv 数据正在正确读取 因为它按预期通过 Anaconda iPython 打印到 macOS 终端 但是 当我将 csv
  • 使用 Android 作为客户端、C# 作为服务器的 TCP/IP 通信

    我想将一些陀螺仪读数从我的 Android 设备发送到 PC 程序 C 我决定通过套接字编程来完成 Android手机作为客户端 运行在计算机上的程序作为服务器 这是我的 android 代码 它现在发送 hello try socket
  • ruby - 延迟迭代数组

    我想迭代数组的一部分 例如 我尝试打印除第一个元素之外的每个元素 array 1 1 each e puts e But array 1 1 建立一个新的Array 如果array非常巨大 另一种简单的方法 1 array size eac