ah ok. Good point. I'm learning :-)
Thanks so much ara!
On 12/1/06, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote:
> On Fri, 1 Dec 2006, x1 wrote:
>
> > What's the best way to make the first item below yield a hash instead
> > of an array in one line? I'm struggling :(
> >
> > #doesnt work
> > time = ["min", "sec"].collect {|i| {i=> Time.now.send(i).to_i}}
> > puts time.type # Array
> >
> > #works
> > time = ["min", "sec"].collect {|i| {i=> Time.now.send(i).to_i}}.first
> > puts time.type # Hash
> > puts time['min']
>
>
> harp:~ > cat a.rb
> now = Time.now
> h = %w( min sec ).inject({}){|h,k| h.update k => now.send(k).to_i}
>
> p h
>
>
> harp:~ > ruby a.rb
> {"sec"=>44, "min"=>26}
>
>
> in particular you don't want to call Time.now inside the loop: you'll otherwise
> sometimes get
>
> {"sec"=>0, "min"=>42}
>
> when you should have gotten
>
> {"sec"=>59, "min"=>41}
>
> regards.
>
> -a
> --
> if you want others to be happy, practice compassion.
> if you want to be happy, practice compassion. -- the dalai lama
>
>