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番目の要素が存在するときはブロックの評価は無視(最初混乱した)