ArgumentError - 尝试在没有块的情况下调用lazy take_while

时间:2014-07-16 13:55:33

标签: ruby lazy-sequences

想象一下,有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 - 尝试在没有块的情况下调用lazy take_while:`

同时根据以下答案:Grouping consecutive numbers in an array 链接.take_while.with_index应该是可能的。

我做错了什么并且没有看到错误或.lazy真的只缺少某些功能而且我将来必须等待一些补丁吗?

1 个答案:

答案 0 :(得分:2)

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