😊
[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