Ruby_Array_23

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

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

インスタンスメソッド

fetch(nth) -> object
fetch(nth, ifnone) -> object
fetch(nth) {|nth| ... } -> object
  • nth番目の要素を返す
  • Array#[]はnth番目の要素が存在しない場合nilを返すが、
    • fetch(nth): IndexErrorが発生する
    • fetch(nth, ifnone): ifnoneを返す
    • fetch(nth) {|nth| ... }: ブロックを評価した結果を返す
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> arr.fetch(1)
=> 2

irb(main):003:0> arr.fetch(5)
Traceback (most recent call last):
        5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>'
        4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load'
        3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
        2: from (irb):3:in `<main>'
        1: from (irb):3:in `fetch'
IndexError (index 5 outside of array bounds: -3...3)

irb(main):004:0> arr.fetch(5, 'not found')
=> "not found"
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> arr.fetch(1) {|nth| nth * 10 }
=> 2

irb(main):003:0> arr.fetch(5) {|nth| nth * 10 }
=> 50

# memo
# nth番目の要素が存在するときはブロックの評価は無視(最初混乱した)