Ruby 4.0 リファレンスマニュアル

instance method Array#rfind

rfind(if_none_proc = nil) {|item| ... } -> object | nilRuby 4.0 から[permalink][rdoc][edit]
rfind(if_none_proc = nil) -> Enumerator

各要素を逆順にブロックに渡して評価し、ブロックが真を返した最初の要素を返します。すなわち、ブロックが真を返す要素のうち最後のものを返します。

ブロックが真を返す要素がなかった場合、if_none_proc を指定していればそれを呼び出した結果を返します。指定していなければ nil を返します。

ブロックが与えられなかった場合は、自身と rfind から生成した Enumerator オブジェクトを返します。

Enumerable#find と対になるメソッドで、reverse_each.find より効率的に同じ結果を得られます。

[PARAM] if_none_proc:
ブロックが真を返す要素がなかった場合に呼び出される、 call メソッドを持つオブジェクト(Proc など)を指定します。
a = [1, 2, 3, 4, 5, 6]

p a.rfind {|item| item < 5 }   # => 4
p a.find {|item| item < 5 }    # => 1  (先頭から探す)

p a.rfind {|item| item > 100 } # => nil

# 見つからないときに if_none_proc の結果を返す
p [1, 2, 3, 4].rfind(proc { 0 }) {|item| item < -2 } # => 0

p a.rfind                      # => #<Enumerator: [1, 2, 3, 4, 5, 6]:rfind>

[SEE_ALSO] Enumerable#find, Array#reverse_each, Array#rindex