From: samuel@... Date: 2016-06-06T03:54:22+00:00 Subject: [ruby-core:75852] [Ruby trunk Bug#12461] Hash & keys to make subset. Issue #12461 has been updated by Samuel Williams. Just to add to this, I also found an implementation here: https://github.com/rubyworks/facets/blob/master/lib/core/facets/hash/slice.rb Now I wonder if this warrants being in the standard library. I believe it probably does since it appears lots of people are using it, and it would probably be significantly faster written in C. ---------------------------------------- Bug #12461: Hash & keys to make subset. https://bugs.ruby-lang.org/issues/12461#change-59026 * Author: Samuel Williams * Status: Open * Priority: Normal * Assignee: * ruby -v: * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- It would be nice if Hash had a way to create a sub-hash with a limited set of keys. This would be useful for keyword functions in particular, because sometimes you have a large hash of things and you only want to send a subset to another function. A definition somewhat like: class Hash def &(keys) keys.each_with_object(self.class.new) {|key, hash| hash[key] = self[key] if has_key?(key)} end end You can see some similar definitions here: https://github.com/rails/rails/blob/b670fadb978c8a12c3414ed842cd49e4fde2cec0/activesupport/lib/active_support/core_ext/hash/slice.rb#L21 It might be nice to support `slice` and `slice!` in a similar logical sense to `Array` rather than proposed `&` operator above - that would just be nice shortcut. -- https://bugs.ruby-lang.org/ Unsubscribe: