🙌
【Ruby 3.4 Advent Calender】Array#fetch_values が追加された【15日目】
Ruby 3.4 Advent Calender 15日目の記事です。
これはなに
今年 2024年12月25日にリリースされる予定の Ruby 3.4 の新機能や変更点などを1つずつ紹介していく Advent Calender になります。
基本的には NEWS に載っている機能を紹介すると思うんですがここにない機能についても書くかもしれません。
また、記事を書いてる時点ではまだ Ruby 3.4 はリリースされる前なので Ruby 3.4 がリリースされた時点で機能が変わっている 可能性があるかもしれないので注意してください。
記事のまとめは ここを参照 してください。
Array#fetch_values
が追加
Ruby 3.4 からは Array#fetch_values
メソッドが追加されます。
`Array#fetch_values``配列の複数の位置から複数の要素を取得するメソッドになります。
ary = %w(homu mami mado)
# 0番目と2番目の要素を取得する
pp ary.fetch_values(0, 2)
# => ["homu", "mado"]
# 1番目の要素を取得する
pp ary.fetch_values(1)
# => ["mami"]
また、範囲外の位置を渡すと IndexError
が発生します。
ary = %w(homu mami mado)
# error: 'Array#fetch': index 5 outside of array bounds: -3...3 (IndexError)
pp ary.fetch_values(0, 5)
似たようなメソッドとして既存で Array#values_at
があるんですがこちらは範囲外でもエラーにはならない違いがあります。
ary = %w(homu mami mado)
# こっちはエラーではなくて nil を返す
pp ary.values_at(0, 5)
# => ["homu", nil]
また、Hash
でも同名のメソッドが定義されており、こちらも同じような挙動になります。
hash = { a: 1, b: 2, c: 3 }
pp hash.fetch_values(:a, :c)
# => [1, 3]
# キーがないと例外になる
# error: 'Hash#fetch_values': key not found: :d (KeyError)
pp hash.fetch_values(:d)
Discussion