From: Robert Klemme Date: 2009-06-06T20:30:05+09:00 Subject: Re: Can someone explain the difference: Array[] and Array.fetch On 06.06.2009 03:03, Marc Heiler wrote: > array = ["a","b","c"] # => ["a", "b", "c"] > array[1] # => "b" > array.fetch 1 # => "b" > > > # ================================================== # > # So far, so fine. > # ================================================== # > > > array[666] # => nil > array.fetch 666 > > IndexError: index 666 out of array > from (irb):5:in `fetch' > from (irb):5 > > > This may seem like a trival difference between the two, but > I am wondering in general why they behave differently. > Or in other words, why array[] does not return an error > whereas .fetch specifically does. I am not the author of that class so I can only speculate. The reason is to have a proper tool for different situations. Often you do not care whether the array index does exist. For example, with [] you can do x = [] x[10] = 123 Without having to worry about array dimensions. If on the other hand you want to see an error if an index out of the current range is used or want to provide a default value you can use #fetch. Btw, these methods are defined with similar semantics for Hash. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/