😊

[Feature #20702] Array#fetch_values を追加する提案

2024/09/02に公開

[Feature #20702] Add Array#fetch_values

  • Array#fetch_values を追加する提案
  • モチベーションとしては ArrayHash は要素を取得するいずれかのメソッドが存在しています
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 も使いどころありそうなのかな
GitHubで編集を提案

Discussion