Ruby_Array_50

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

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

インスタンスメソッド

rindex(val) -> Integer | nil
rindex {|item| ... } -> Integer | nil
rindex -> Enumerator
  • 指定されたvalと==で等しい最後の要素の位置を返す
    • 等しい要素がひとつもなかった場合はnilを返す
  • ブロックが与えられた場合、各要素を末尾から順に引数としてブロックを実行し、ブロックが真を返す最初の要素の位置を返す
    • ブロックが真を返す要素がなかったときはnilを返す
  • 引数、ブロックのどちらも与えられなかった場合、自身とrindexから生成したEnumeratorオブジェクトを返す
irb(main):001:0> arr = ['a', 'b', 'a', nil]
=> ["a", "b", "a", nil]

irb(main):002:0> arr.rindex('b')
=> 1

irb(main):003:0> arr.rindex('a')
=> 2

irb(main):004:0> arr.rindex(nil)
=> 3

irb(main):005:0> arr.rindex('z')
=> nil
irb(main):001:0> [1, 2].rindex(1.0)
=> 0

irb(main):002:0> [1, 2].rindex('1')
=> nil

irb(main):003:0> [1.0, 2].rindex('1')
=> nil
irb(main):001:0> [1, 3, 5, 7].rindex { |v| v > 4 }
=> 3
irb(main):001:0> arr = [1, 5, 7, 3]
=> [1, 5, 7, 3]

irb(main):002:0> enum = arr.rindex
=> #<Enumerator: [1, 5, 7, 3]:rindex>

irb(main):003:0> enum.each { |v| puts v }
3
7
5
1
=> nil

irb(main):004:0> enum.each { |v| v > 4 }
=> 2

irb(main):005:0> enum.each { |v| v < 0 }
=> nil

irb(main):006:0> arr << 6
=> [1, 5, 7, 3, 6]

irb(main):007:0> enum
=> #<Enumerator: [1, 5, 7, 3, 6]:rindex>