Ruby_Array_45

この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。

class Array (Ruby 3.1 リファレンスマニュアル)

インスタンスメソッド

rassoc(obj) -> Array | nil
  • 自身が配列の配列であると仮定して、要素の配列でインデックス1の要素がobjに等しいものを検索し、見つかった最初の要素を返す。
    • 見つからなければnilを返す
    • 比較は==演算子を使って行われる
irb(main):001:0> arr = [['a', 1], ['b', 2], ['c', 2]]
=> [["a", 1], ["b", 2], ["c", 2]]

irb(main):002:0> arr.rassoc(2)
=> ["b", 2]

irb(main):003:0> arr.rassoc(3)
=> nil

# memo
# 一番最初に見つかったものを返すので、['c', 2]は返されない
irb(main):001:0> arr = [['a', 1], ['b', 2], ['c', 2]]
=> [["a", 1], ["b", 2], ["c", 2]]

irb(main):002:0> obj = 2
=> 2

# rassocを使わないとこうなるのかな?
irb(main):003:0> arr.select { |v| v[1] == obj }[0]
=> ["b", 2]

# 使うとすっきりする。パッと見てrassocってどういうメソッドだっけっていう感覚ではある
irb(main):004:0> arr.rassoc(obj)
=> ["b", 2]

メモ

  • latestドキュメントへのリンクにしてたらいつの間にかver3.1になってた。バージョン指定のドキュメントリンクにしておけばよかった・・・けどまあいっか。
  • rassocを見てぱっとどういう挙動かわかるRubyistはどのくらいいるんやろうか
  • assocはassociateの意味?rassocはreverse associateの意味?