Method: Array#dig

Defined in:
array.c

#dig(idx, ...) ⇒ Object

Extracts the nested value specified by the sequence of idx objects by calling dig at each step, returning nil if any intermediate step is nil.

a = [[1, [2, 3]]]

a.dig(0, 1, 1)                    #=> 3
a.dig(1, 2, 3)                    #=> nil
a.dig(0, 0, 0)                    #=> NoMethodError, undefined method `dig' for 1:Fixnum
[42, {foo: :bar}].dig(1, :foo)    #=> :bar

Returns:



5550
5551
5552
5553
5554
5555
5556
5557
5558
# File 'array.c', line 5550

VALUE
rb_ary_dig(int argc, VALUE *argv, VALUE self)
{
    rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
    self = rb_ary_at(self, *argv);
    if (!--argc) return self;
    ++argv;
    return rb_obj_dig(argc, argv, self, Qnil);
}