mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
add #dig to Array,Hash and Struct
This commit is contained in:
@@ -744,4 +744,21 @@ class Array
|
||||
def to_ary
|
||||
self
|
||||
end
|
||||
|
||||
##
|
||||
# call-seq:
|
||||
# ary.dig(idx, ...) -> object
|
||||
#
|
||||
# Extracts the nested value specified by the sequence of <i>idx</i>
|
||||
# objects by calling +dig+ at each step, returning +nil+ if any
|
||||
# intermediate step is +nil+.
|
||||
#
|
||||
def dig(idx,*args)
|
||||
n = self[idx]
|
||||
if args.size > 0
|
||||
n&.dig(*args)
|
||||
else
|
||||
n
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -365,4 +365,21 @@ class Hash
|
||||
key?(key) and self[key] == val
|
||||
}
|
||||
end
|
||||
|
||||
##
|
||||
# call-seq:
|
||||
# hsh.dig(key,...) -> object
|
||||
#
|
||||
# Extracts the nested value specified by the sequence of <i>key</i>
|
||||
# objects by calling +dig+ at each step, returning +nil+ if any
|
||||
# intermediate step is +nil+.
|
||||
#
|
||||
def dig(idx,*args)
|
||||
n = self[idx]
|
||||
if args.size > 0
|
||||
n&.dig(*args)
|
||||
else
|
||||
n
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -82,5 +82,22 @@ if Object.const_defined?(:Struct)
|
||||
#
|
||||
alias to_s inspect
|
||||
end
|
||||
|
||||
##
|
||||
# call-seq:
|
||||
# hsh.dig(key,...) -> object
|
||||
#
|
||||
# Extracts the nested value specified by the sequence of <i>key</i>
|
||||
# objects by calling +dig+ at each step, returning +nil+ if any
|
||||
# intermediate step is +nil+.
|
||||
#
|
||||
def dig(idx,*args)
|
||||
n = self[idx]
|
||||
if args.size > 0
|
||||
n&.dig(*args)
|
||||
else
|
||||
n
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user