From: han.holl@... (Han Holl) Date: 2004-07-09T19:17:31+09:00 Subject: Re: Proposal for Hash#invert "Robert Klemme" wrote in message news:<2l58ksF8qv8pU1@uni-berlin.de>... > > A check for block_given? is missing here: > No, I don't think so. arbitrate will be empty if there is no block > > class Hash > > def invert_test(&b) > reverse = self.class.new > > each do |key, val| > if b and reverse.has_key? val > b.call reverse, val, key > else > reverse[val] = key > end > end > > reverse > end > > end The trouble with this approach is that you get called on each duplicate value. Sometimes I find I can only decide on the most appropriate candidate if I've seen them all, but in most cases your implementation would work as well. Cheers, Han Holl