gpt4 book ai didi

ruby - 懒惰地遍历数组

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:40 26 4
gpt4 key购买 nike

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

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

但是 array[1..-1] 构建了一个新的 Array。如果 array 非常大,那就太浪费了。另一种直接的方法:

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

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

最佳答案

Ruby 2.0 将发布 Lazy enumerables (好消息!),现在我们可以使用像 enumerable-lazy 这样的 gem 来预热引擎。 :

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

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

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

关于ruby - 懒惰地遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com