From: Austin Ziegler Date: 2002-06-22T08:17:21+09:00 Subject: Re: Looking for the Ruby way for the following On Sat, 22 Jun 2002 06:52:05 +0900, David Alan Black wrote: > On Sat, 22 Jun 2002, Austin Ziegler wrote: >> On Sat, 22 Jun 2002 06:17:25 +0900, Bil Kleb wrote: >>> Currently I am using the following rather ugly bit of Ruby code >>> to calculate the maximum length of the file names strings (plus >>> one) in the array file_list, >>> >>> fn_width = 0 >>> file_list.each{ |fn| fn_width = [File.basename(fn).size, >>> fn_width].max } >>> fn_width += 1 >>> >>> Can someone offer a more elegant method? My brain seems to have >>> shutdown on this problem today... >> Why not use #inject()? It seems like it would be the natural >> choice in this case. > I confess I am #inject-ly challenged. Can you show how this would > be done? I believe that it would be something like (adapted from the Pickaxe book): file_list.inject(0) do |fn_width, fn| fn_width = [File.basename(fn).size, fn_width].max end fn_width += 1; I suspect that the map solution you provided earlier is cleaner, and you may need to do the appropriate #inject() mixin (p102 of the Pickaxe book) if you don't have 1.7 (I think that's when #inject() was added). -austin -- Austin Ziegler, austin@halostatue.ca on 2002.06.21 at 19.08.37