想象一下,有 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:`
而根据诸如以下的答案:在数组
链接中对连续数字进行分组.take_while.with_index
应该是可能的。
我做错了什么并且没有看到错误,还是.lazy
真的只是缺少一些功能,我必须等待将来的一些补丁?