【问题标题】:ArgumentError - tried to call lazy take_while without a blockArgumentError - 尝试在没有块的情况下调用惰性 take_while
【发布时间】:2014-07-16 13:55:33
【问题描述】:

想象一下,有 M 个大文本文件,每个文件有 N 行,索引从 1 到 M*N。我的目标是获取索引 X 之后的所有行,或者如果未提供 X,则仅获取最后 10 行。我可以做一个外部if 来拆分这两个公式,但我想把? : 放在里面,比如:

    Dir.glob("logs/*").reverse.lazy.flat_map{ |f|
        File.readlines(f).reverse.map{ |str| str.split(" ", 2) }
    }.take_while.with_index{ |(i, str), n|
        x ? (i.to_i >= x) : (n < 10)
    }.to_a.reverse

但我明白了:

ArgumentError - 尝试在没有块的情况下调用惰性 take_while:`

而根据答案如:Grouping consecutive numbers in an array 应该可以链接.take_while.with_index

是我做错了什么没有看到错误,还是.lazy 真的只是缺少一些功能,我必须等待将来的一些补丁?

【问题讨论】:

    标签: ruby lazy-sequences


    【解决方案1】:

    看来我只需要将.take_while.with_index 切换为.with_index.take_while

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 2011-03-29
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      相关资源
      最近更新 更多