ruby - 引用具有指定索引的枚举器值

标签 ruby enumerable

假设我有一个可枚举对象enum,现在我想获取第三个项目。

我知道一种通用方法是转换成数组,然后使用索引访问,如:

enum.to_a[2]

但这种方式会创建一个临时数组,效率可能很低。

现在我使用:

enum.each_with_index {|v, i| break v if i == 2}

但这非常丑陋和多余。

执行此操作最有效的方法是什么?

最佳答案

你可以使用 take剥离前三个元素,然后剥离 lasttake 给你的数组中获取第三个元素:

third = enum.take(3).last

如果您根本不想生成任何数组,那么也许:

# If enum isn't an Enumerator then 'enum = enum.to_enum' or 'enum = enum.each'
# to make it one.
(3 - 1).times { enum.next }
third = enum.next

关于ruby - 引用具有指定索引的枚举器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973834/

相关文章:

ruby - irb 和 pry 中相同 ruby​​ 代码的冲突输出

arrays - 为什么映射可枚举返回值不返回预期值

ruby 1.8.7 : group_by with sum in an enumerable type

c# - 可枚举给出意外输出

ruby-on-rails - 在 View 中打印模型计数 (MVC)

ruby-on-rails - 使用 DATE_TRUNC ('week' ),如果一周的 .sum( :points) has 0?

ruby - 如何使用 Typhoeus 在 on_body 回调中中止当前请求

ruby - 捆绑安装时 ruby​​ 版本的问题

ruby - 如何在 ruby​​ 中将 with_index 和 with_object 链接到可枚举对象上?

ruby - 帮助理解 Ruby 中的产量和枚举器