Edited at

lazyにするとrewindは無効?

More than 5 years have passed since last update.

require 'enumerable/lazy'

pr = lambda{|e| e.tap{|e|p e.count}.tap{|e|p e.count}.tap{|e|e.rewind}.tap{|e|p e.count}}

# non-lazy
nl = File.open("/WINDOWS/system/setup.inf").lines; pr[nl]
#=> 1497
#=> 0
#=> 1497

# lazy
l = File.open("/WINDOWS/system/setup.inf").lines.lazy; pr[l]
#=> 1497
#=> 0
#=> 0