Существует встроенный метод Array#fetch
, который действует как #[]
, но вызывает IndexError вместо возврата nil, когда элемент не найден.(То же самое относится и к Hash.) Я всегда использую первый, если не ожидаю, что коллекция исключит элемент.
a = [:foo, :bar]
a.fetch(0) #=> :foo
a[4] #=> nil
a.fetch(4) #=> IndexError: index 4 outside of array bounds: -2...2
А для других случаев возбудите исключения самостоятельно, как предлагает Брамха Гош:
raise "I don't expect this to be nil!" if element.nil?
Однако вам не следует делать это часто, только если вы знаете, что ваш код потерпит неудачу, делая отладку болезненной.