gpt4 book ai didi

Ruby 从大范围中获取第 n 个项目

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

假设我有这个范围:

("aaaaa".."zzzzz")

如何在不事先/每次生成整个项目的情况下从范围中获取第 N 个项目?

最佳答案

一种快速简便的方法:

("aaaaa".."zzzzz").first(42).last  # ==> "aaabp"

如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前 N 个元素构建中间数组,你可以这样写:

module Enumerable
def skip(n)
return to_enum :skip, n unless block_given?
each_with_index do |item, index|
yield item unless index < n
end
self
end
end

("aaaaa".."zzzzz").skip(41).first # ==> "aaabp"

注意:我假设您想要一个适用于任何 Enumerable 的解决方案,而不适用于字母范围(在这种情况下您应该直接计算它)。我还假设 Ruby 1.8.7+,否则升级或需要“backports”

关于Ruby 从大范围中获取第 n 个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732512/

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