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 - 延迟迭代数组 的相关文章

  • 更改 en.yml 文件中的属性名称不起作用

    我更改了 ruby on Rails 项目中 en yml 文件中的属性名称 按钮工作正常 但字段属性并没有改变 这是我的模型 class Enr AffordableWarmth lt ActiveRecord Base self tab
  • 如何在 Ruby 中将 DateTime.now 转换为 UTC?

    如果我有d DateTime now 如何将 d 转换为 UTC 带有适当的日期 DateTime now new offset 0 将在标准 Ruby 中工作 即没有 ActiveSupport
  • Rails:在任何源中都找不到并发 ruby​​-1.0.5 (Bundler::GemNotFound)

    我已经用谷歌搜索了很多 但没有发现任何对我的情况有用的东西 docker compose up abc 在日志中生成以下内容 usr lib ruby vendor ruby bundler spec set rb 92 in block
  • 如何在 foreach( ... , .packages="pkg") %dopar% 中指定 R 包的位置

    我的 包 安装在其他地方 我如何告诉 foreach 在哪里可以找到该包 foreach i 1 2 packages pkg dopar 这给我错误消息 worker initialization failed there is no p
  • Ruby/Rails - 如何创建类并从控制器访问它

    我一直在尝试使用一些不同的 gem 在 Rails 3 中显示谷歌地图 但遇到了一些问题 幸运的是我发现了这个https github com YouthTree bhm google maps https github com Youth
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • Ruby:创建日期范围

    我正在寻找一种优雅的方式来制作一系列日期时间 例如 def DateRange start time end time period end gt gt results DateRange DateTime new 2013 10 10 1
  • 查询,无法选择列数

    Tag joins quote tags group quote tags tag id order count desc select count tags id AS count tags id tags name Build quer
  • 迭代和遍历有什么区别?

    过去几周我一直在学习迭代器 我仍然不明白迭代链接列表和遍历链接列表之间的主要区别 我知道遍历意味着遍历 访问每个元素 链接列表 并且在迭代时基本上做同样的事情 但是有什么不同 为什么不能遍历所有内容 标准库数据结构 遍历 只是意味着遍历数据
  • Rails3 has_many 关系中子项计数的范围

    尝试在rails3中做一个范围 book has many chapters 我想要 range long 返回超过 10 章的书籍 如何最好地构建这个范围 不使用计数器缓存 thanks 这应该会让你继续 class Book scope
  • 用于验证网络路径的正则表达式 PHP、jQuery、JavaScript、Ruby

    尝试找出用于验证网络路径的正则表达式 即 comp xyz or comp or comp x y z storage或者所有部分都更长的东西 但希望能够传达其要点 我目前拥有的是一个简单的输入字段 用户可以通过它传递信息 事情是我不希望他
  • 在 (Mac)Vim 中查看 ri 时摆脱 ANSI 转义字符

    我在 gvim 和 MacVim 中查看 ri 文档时遇到问题 在两者上都尝试过 一些 ri 文档包含在终端窗口中查看时看起来不错的文本装饰 但在 gvim MacVim 中查看时包含 ANSI 转义字符 例如 以下 ri 片段来自 ri
  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • 查找日期时间与今天日期匹配的记录 - Ruby on Rails

    我有一个交易表 需要查找日期与今天的日期匹配的记录 从 Rails 控制台 我需要匹配的日期字段如下所示 我已经分配了一条记录来进行测试 ruby 1 9 2 p0 gt deal start gt Tue 10 May 2011 00 0
  • 在 Ruby 中转义字符串

    我想在某些 Ruby 中插入以下内容作为变量的值 lt gt 用双引号将其引起来是行不通的 那么是否有一个很好的 escape until the end 之类的东西可用 不要使用多种方法 保持简单 转义 反斜杠和双引号 irb main
  • 从标签中提取 HTML5 数据属性

    我想从标签中提取所有 HTML5 数据属性 就像这个 jQuery 插件 http www orangesoda net jquery dataset html 例如 给定 span class highlight Joe Bloggs s
  • 检索用户关注的所有用户的帖子 -rails -ActiveRecord

    我有一个简单的 Rails 应用程序 用户可以在其中互相赠送虚拟礼物 每件礼物都属于两个用户 赠送者和接收者 In my User rb has many given gifts class name Gift foreign key gi
  • mail_form gem 与 sidekiq 工作者

    怎么做邮件表格gem 与 sidekiq 工作人员一起工作吗 https github com plataformatec mail form https github com plataformatec mail form 我可能做错了什
  • 如何使用 Nokogiri 将带有 & 符号的字符串放入 xml 文件中?

    我试图在 XML 文件中包含图像的 URL 并且 URL 查询字符串中的 符号被删除 bgdoc xpath Master each do elem part elem xpath Part inner text image imageha

随机推荐

  • 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