From: David Jacobs Date: 2011-05-26T07:30:45+09:00 Subject: Re: Scope problem (?) in implementing Design Patterns in Ruby Hi Richard, Glad the advice helped! Probably a more concise (and robust) way to get the full pathname of your Dir[] results would be: full_name = File.expand_path(path) This has the advantage of expanding '~' to '/home/richard' (or whatever). If you add in higher order functions *here* (I'm just saying this to reinforce the earlier concept along with the above method), you go from this: array = [] Dir.chdir(dir) do Dir['**/*'].each do |path| # Added each & block full_name = File.join(dir, path) array << path end end array To this: Dir.chdir(dir) do Dir['**/*'].map {|path| File.expand_path(path) } end On Tuesday, 24 May 2011 at 11:35 pm, RichardOnRails wrote: On May 12, 9:56 pm, David Jacobs wrote: > > > Second, look into higher order functions. They let you change code from this: > > Hi Dave, > > I just want to let you know your tutelage on this thread has not gone > in vain. > > 1. I wanted to return a list (i.e. array) of filenames rather than > concatenated strings. Maybe parsing the concatenated strings would > have gotten me my lists, but I want the arrays to be the direct output > (in part just to see if I understood your code well enough to do it.) > > 2. I wanted to do it by passing a search pattern to Filename.new and > a directory to the related expression. > > These changes are displayed at http://www.pastie.org/1969301 > > I'm continuing to work on embracing the higher-order methods you > advocated. > > Best wishes, > Richard >