From: Rob Biedenharn Date: 2010-01-22T07:54:22+09:00 Subject: Re: an elegant way to modify all lines from file by using map() function? On Jan 21, 2010, at 5:40 PM, Benoit Daloze wrote: > Hi, > > 2010/1/21 RobertGawron > >> Hi all, >> >> I'm new in ruby and I just have a question: in python when I want to >> read all lines from file, do something with all of them and then use >> them in my program I use map function + lambda function, sth like >> that: >> >> print map(lambda u: u.upper(), open("foo", "r").readlines()) >> >> but in your language I didn't find the way to create in one step >> array >> of all lines from file, that could be used by map(). If I really want >> to use map in this situation I have to use secondary array (called >> arr) like in this snippet? >> >> arr = Array.new >> File.open('foo').each_line{ |l| arr.push l } >> p arr.collect{ |l| l.upcase } >> >> Please post a code-snippet, it's quite interesting to me :) >> >> > Waow awesome how the order is in Python... > > Let's take the natural order, welcome to Ruby ! > > puts File.read('foo').lines.map { |line| line.upcase } > That's in ruby 1.9 > Notice lines is an Enumerator, that can be converted to an Array if > needed > by #to_a > > You got also IO.readlines Don't stop there! Take advantage of the Symbol#to_proc behavior: puts File.read('foo').lines.map(&:upcase) ;-) -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com