From: nobu@...
Date: 2019-12-16T12:38:54+00:00
Subject: [ruby-core:96265] [Ruby master Feature#16425] Add Thread#dig

Issue #16425 has been reported by nobu (Nobuyoshi Nakada).

----------------------------------------
Feature #16425: Add Thread#dig
https://bugs.ruby-lang.org/issues/16425

* Author: nobu (Nobuyoshi Nakada)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
`Thread` has `#[]` method like as `Array`, `Hash`, `Struct` and so on, but no `#dig`.

For instance, `PP::PPMethods#check_inspect_key` in pp.rb can be simplified with the combination of this method and safe navigation operator.

From
```ruby
    def check_inspect_key(id)
      Thread.current[:__recursive_key__] &&
      Thread.current[:__recursive_key__][:inspect] &&
      Thread.current[:__recursive_key__][:inspect].include?(id)
    end
```

To
```ruby
    def check_inspect_key(id)
      Thread.current.dig(:__recursive_key__, :inspect)&.include?(id)
    end
```

Patch: https://github.com/ruby/ruby/pull/2756




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>