😊
[Feature #20702] Array#fetch_values を追加する提案
[Feature #20702] Add Array#fetch_values
-
Array#fetch_valuesを追加する提案 - モチベーションとしては
ArrayとHashは要素を取得するいずれかのメソッドが存在しています
array = [1, 2, 3]
hash = { a: 1, b: 2, c: 3 }
# キーから値を取得する
pp array[1] # => 2
pp array[4] # => nil
pp hash[:a] # => 1
pp hash[:d] # => nil
# 見つからなければ例外を排出したりブロックを呼び出す
pp array.fetch(2) # => 2
# pp array.fetch(4) # => IndexError
pp array.fetch(4) { 42 } # => 42
pp hash.fetch(:b) # => 2
# pp hash.fetch(:d) # => KeyError
pp hash.fetch(:d) { 42 } # => 42
# 複数の値を取得する
pp array.values_at(1, 2) # => [2, 3]
pp array.values_at(2, 3) # => [3, nil]
pp hash.values_at(:b, :c) # => [2, 3]
pp hash.values_at(:c, :d) # => [3, nil]
- ただし
Hashには『複数の値を取得しつつ見つからなければ例外を発生させる』メソッドとして#fetch_valuesがあるんですがArrayにはありません
hash = { a: 1, b: 2, c: 3 }
pp hash.fetch_values(:c, :d) # => KeyError
- なので
Array#fetch_valuesも追加しよう、みたいな感じです -
Hash#fetch_valuesは使ったことないんですがArray#fetch_valuesも使いどころありそうなのかな-
Hash#fetch_valuesが追加されたチケットは Feature #10017: AddHash#fetch_values
-
Discussion