Ruby 2.0中不推荐使用IO行;如何逐行迭代?
我的Ruby 1.9.3代码打开一个文件并检查每一行是否存在某个字符串:Ruby 2.0中不推荐使用IO行;如何逐行迭代?,ruby,ruby-2.0,Ruby,Ruby 2.0,我的Ruby 1.9.3代码打开一个文件并检查每一行是否存在某个字符串: if File.open('Gemfile').lines.any?{|line| line.include?('pg')} puts "found 'pg'" end Ruby 2.0.0给了我一个警告: 警告:IO#行已弃用;改用#每条#线 在Ruby 2.0.0中实现这一点最有效的方法是什么?在Ruby 2.0IO中,每一行都可以返回一个枚举数。因此,将行替换为每行或简单地替换为每行应该与当前代码完全相同 if
if File.open('Gemfile').lines.any?{|line| line.include?('pg')}
puts "found 'pg'"
end
Ruby 2.0.0给了我一个警告:
警告:IO#行已弃用;改用#每条#线
在Ruby 2.0.0中实现这一点最有效的方法是什么?在Ruby 2.0IO中,每一行都可以返回一个枚举数。因此,将行
替换为每行
或简单地替换为每行
应该与当前代码完全相同
if File.open('Gemfile').each {|line| line.include?('pg')}
puts "found 'pg'"
end
在ruby 2.0IO中,每一行都可以返回一个枚举数。因此,将行
替换为每行
或简单地替换为每行
应该与当前代码完全相同
if File.open('Gemfile').each {|line| line.include?('pg')}
puts "found 'pg'"
end
行
很快导致代码不可伸缩,因为它鼓励在迭代之前将整个文件加载到内存中。虽然今天的主机有很多GB的RAM,但这并不能给我们一个很好的理由尝试一次性将那么多GB的文本加载到内存中。相反,使用或保存内存,导致非常接近相同的执行速度,而不会过度使用RAM?如果您运行的是Linux或Mac操作系统,则执行此检查的最快方法是使用grep
。它针对快速搜索进行了高度优化。行
快速生成不可伸缩的代码,因为它鼓励在迭代之前将整个文件加载到内存中。虽然今天的主机有很多GB的RAM,但这并不能给我们一个很好的理由尝试一次性将那么多GB的文本加载到内存中。相反,使用或保存内存,导致非常接近相同的执行速度,而不会过度使用RAM?如果您运行的是Linux或Mac操作系统,则执行此检查的最快方法是使用grep
。它对快速搜索进行了高度优化。