本文へスキップ
BecomeCoder

Rubyのエラー · エラー11

IndexError ― Arrayのfetchで範囲外を指定した

配列[] でアクセスすると範囲外の添字は静かに nil を返しますが、fetch で範囲外を指定すると例外になります。存在確認を強制したいときにわざと使う書き方です。

出るコード

items = ["a", "b", "c"]
items.fetch(3)   # 添字は 0〜2 まで

エラーメッセージ

index 3 outside of array bounds: -3...3 (IndexError)

直し方

items.length で長さを確認する、または fetch の第2引数にデフォルト値を渡します。

items.fetch(3, nil)   # 範囲外なら nil