On Wed, 29 Nov 2000, Dave Thomas wrote: > David Alan Black <dblack / candle.superlink.net> writes: > > > class Array > > def to_h > > h = {} > > each_index { |i| h[i] = at i } > > h > > end > > end > > > > %w{ list of words }.to_h # => {0=>"list", 1=>"of", 2=>"words"} > > > > One could then invert the hash to get at least one version of the > > original effect -- namely, the original array elements as hash keys > > and all the values true. (Even zero!) > > I'm convinced by this, particular if we added the block form too. I was wondering about a block form. I'm not sure exactly what it would do -- specifically, whether the results of the block would pertain to the keys or the values of the new hash. In other words, would it be this: each_with_index { |e,i| h[i] = yield(i, e) } or this: each_with_index { |e,i| h[yield(i, e)] = e } or something else? Or might it be better for to_h to be blockless, since the new hash could in any case simply be processed with all the familiar iterators? Another question on the hypothetical to_h subject: would there be any reason for to_h not to be part of Enumerable, rather than Array? David -- David Alan Black home: dblack / candle.superlink.net work: blackdav / shu.edu Web: http://pirate.shu.edu/~blackdav