Hash#slice!

Hi,

One of the fundamental methods share by both ActiveSupport and Facets is Hash#slice!. A few days ago, someone pointed out to me that the two libs in this case are not quite the same. Quote, "I got hosed by a lovely bug stemming from facets' and rails' slice! returning opposite things... facets returns the key,value pairs not matched by the keys passed, great because it gives you two things back at once, though slice and slice! return different things. rails returns the key,value pairs matched, that is, slice and slice! have the same return"

Generally I let Facets defer to the behavior of ActiveSupport when there is a conflict, but in this case the Facets implementation seems more useful and is also more in line to similar methods in core Ruby, ie. Array#slice!, which also returns the deleted items.

So I was hoping that Rails could be modified to support this alternate implementation of Hash#slice!.

Thanks, T.

Hi,

One of the fundamental methods share by both ActiveSupport and
Facets is Hash#slice!. A few days ago, someone pointed out to me that the two
libs in this case are not quite the same. Quote, "I got hosed by a lovely
bug stemming from facets' and rails' slice! returning opposite things... facets returns the key,value pairs not matched by the keys passed,
great because it gives you two things back at once, though slice and slice! return different things. rails returns the key,value pairs matched, that is, slice and slice! have the same return"

Generally I let Facets defer to the behavior of ActiveSupport when
there is a conflict, but in this case the Facets implementation seems more useful and is also more in line to similar methods in core Ruby, ie. Array#slice!, which also returns the deleted items.

So I was hoping that Rails could be modified to support this alternate implementation of Hash#slice!.

Best place to discuss this is the rubyonrails-core mailing list.
Regardless of which way is "better" any change will have backwards
compatibility implications.

Fred