[ruby-dev:49431] [Ruby trunk - Feature #11688] Struct and OpenStruct will be able to chain the Hash#dig Array#dig

From: kachick1@...
Date: 2015-12-12 04:37:58 UTC
List: ruby-dev #49431
Issue #11688 has been updated by Kenichi Kamiya.


Nobuyoshi Nakada wrote:
> As those two classes were not parts of [Feature #11643], they are not rejected nor discussed.
> `Struct#dig` should be at least, IMHO.
> 
> > [patch](https://github.com/ruby/ruby/pull/1097)
> 
> I feel that an argument of `OpenStruct#dig` should not raise an exception until it is used, as well as `Array` and `Hash`.
> 
> ~~~ruby
> [].dig("foo")          #=> no implicit conversion of String into Integer (TypeError)
> [].dig(1, "foo")       #=> nil
> OpenStruct.new.dig(0)  #=> undefined method `to_sym' for 0:Fixnum (NoMethodError)
> ~~~
> 
> It may be too strict though.
> How do you think?

Sorry for the late reply!

>nobu

Thanks for your improvemets!
And I'm sorry to bother you, I forgot to adjust arity as https://github.com/ruby/ruby/commit/482530680c18ea2e44c3300c6f323fabc3bd55f7#diff-f0ac5119f74bfda273347c9925e910d7R226

>It may be too strict though.
How do you think?

At first, I felt its better to raise an error as `Array#dig given a non index` and `OpenStruct#dig given a non method name`.
But since I read https://bugs.ruby-lang.org/issues/11762, I think returning nil is reasonable when the nested receiver respond to #dig.

>Matz

Thanks to contain both #dig into Ruby 2.3, I'll enjoy!

----------------------------------------
Feature #11688: Struct and OpenStruct will be able to chain the Hash#dig Array#dig
https://bugs.ruby-lang.org/issues/11688#change-55487

* Author: Kenichi Kamiya
* Status: Closed
* Priority: Normal
* Assignee: 
----------------------------------------
Struct and OpenStruct are rejected with #dig? I couldn't get from [Feature #11643]

[patch](https://github.com/ruby/ruby/pull/1097)

---Files--------------------------------
bm_dig.rb (1.88 KB)


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

In This Thread

Prev Next