Issue #7654 has been updated by Eregon (Benoit Daloze).


But of course the main memory usage here are likely String instances, so you should update them in place if possible:

    File.foreach('test.rb').map { |line| line.upcase!; line }
    # or
    lines = File.readlines('file.c')
    lines.each(&:upcase!)
----------------------------------------
Feature #7654: Add optional code block to IO::readlines
https://bugs.ruby-lang.org/issues/7654#change-35211

Author: shock_one (??ݧէڧާ?? ????ܧڧ)
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 


Of course, we always can write something like
File.readlines('/home/shock_one/test.rb').map{ |line| line.upcase }
but this way we create unneeded intermediate array which can be pretty big.
There is also a method IO::foreach, but it doesn't collect return values.
Besides it seems pretty logical and natural to have a block in this method.


-- 
http://bugs.ruby-lang.org/