Class: Array

Inherits:
Object
  • Object
show all
Defined in:
ext/backport_dig/backport_dig.c

Instance Method Summary collapse

Instance Method Details

#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)                    #=> TypeError: Fixnum does not have #dig method
[42, {foo: :bar}].dig(1, :foo)    #=> :bar

Returns:

  • (Object)


114
115
116
117
118
119
120
121
122
# File 'ext/backport_dig/backport_dig.c', line 114

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);
}