From: shevegen@... Date: 2016-04-16T04:20:01+00:00 Subject: [ruby-core:74977] [Ruby trunk Feature#12282] Hash#dig! for repeated applications of Hash#fetch Issue #12282 has been updated by Robert A. Heiler. I concur with Shyouhei Urabe - the name seems to not entirely fit the given outcome. More typical use cases of methods with ! bang, if we ignore any exception, would be more akin to things such as: x = "abc" # => "abc" x.delete 'c' # => "ab" x # => "abc" x.delete! 'c' # => "ab" x # => "ab" ---------------------------------------- Feature #12282: Hash#dig! for repeated applications of Hash#fetch https://bugs.ruby-lang.org/issues/12282#change-58105 * Author: Robb Shecter * Status: Open * Priority: Normal * Assignee: ---------------------------------------- A new feature for your consideration: #dig! which is to #fetch as #dig is to #[]. For me and maybe many others, Hash#fetch is used much more than Hash#[]. And traversing multiple fetches isn't very convenient nor Ruby-like, e.g.: places.fetch(:countries).fetch(:canada).fetch(ontario). Here's how it would work: ~~~ruby places = { countries: { canada: true } } places.dig :countries, :canada # => true places.dig! :countries, :canada # => true places.dig :countries, :canada, :ontario # => nil places.dig! :countries, :canada, :ontario # => KeyError: Key not found: :ontario ~~~ Here's an implementation and tests: https://gist.github.com/dogweather/819ccdb41c9db0514c163cfdb1c528e2 -- https://bugs.ruby-lang.org/ Unsubscribe: