I was going through the exercises in Ruby Koans and I was struck by the following Ruby quirk that I found really unexplainable:
array = [:peanut, :butter, :a
Consider the following array:
>> array=["a","b","c"]
=> ["a", "b", "c"]
You can insert an item to the begining (head) of the array by assigning it to a[0,0]
. To put the element between "a"
and "b"
, use a[1,0]
. Basically, in the notation a[i,n]
, i
represents an index and n
a number of elements. When n=0
, it defines a position between the elements of the array.
Now if you think about the end of the array, how can you append an item to its end using the notation described above? Simple, assign the value to a[3,0]
. This is the tail of the array.
So, if you try to access the element at a[3,0]
, you will get []
. In this case you are still in the range of the array. But if you try to access a[4,0]
, you'll get nil
as return value, since you're not within the range of the array anymore.
Read more about it at http://mybrainstormings.wordpress.com/2012/09/10/arrays-in-ruby/ .