From: Trans Date: 2008-04-13T08:12:07+09:00 Subject: Re: Hash#slice On Apr 12, 5:00 pm, ara howard wrote: > is this consistent with other peoples stdlib hacks? > > class Hash > def slice *keys, &block > if block > each do |key, val| > boolean = block.call(key, val) > keys << key if boolean > end > end > hash = self > keys.inject({}){|returned, key| returned.update key => hash[key]} > end > end > > ?? Let see.... Facets: class Hash # Returns a new hash with only the given keys. def slice(*keep_keys) h = {} keep_keys.each do |key| h[key] = fetch(key) end h end # Replaces hash with a new hash having only the given keys. # This return the hash of keys removed. def slice!(*keep_keys) removed = except(*keep_keys) replace(slice(*keep_keys)) removed end end T.