Actions
Feature #20702
openAdd `Array#fetch_values`
Status:
Open
Assignee:
-
Target version:
-
Description
Array
and Hash
have matching methods to fetch:
- One value using
[]
(Array
also allows fetching multiple with range or two arguments) - One value with default or exception using
fetch
method - Multiple values using
values_at
method
But only Hash
has method fetch_values
to fetch multiple values with fallback or raising an exception (see #10017).
hash = {a: 1, b: 2, c: 3}
array = [1, 2, 3]
hash[:b] # => 2
hash[:d] # => nil
array[1] # => 2
array[4] # => nil
hash.fetch(:b) # => 2
hash.fetch(:d) # => IndexError
hash.fetch(:d){ 42 } # => 42
array.fetch(1) # => 2
array.fetch(4) # => IndexError
array.fetch(4){ 42 } # => 42
hash.values_at(:b, :c) # => [2, 3]
hash.values_at(:b, :d) # => [2, nil]
array.values_at(1, 2) # => [2, 3]
array.values_at(1, 4) # => [2, nil]
hash.fetch_values(:b, :c) # => [2, 3]
hash.fetch_values(:b, :d) # => IndexError
hash.fetch_values(:b, :d){ 42 } # => [2, 42]
# missing
array.fetch_values(1, 2) # => [2, 3]
array.fetch_values(1, 4) # => IndexError
array.fetch_values(1, 4){ 42 } # => [2, 42]
No data to display
Actions
Like0