```Timothy Hunter wrote:
> On May 15, 2006, at 5:06 PM, Joe Seeley wrote:
>
>> The 2 dimensional array or table structure is extremely common, but I
>> don't see a simple/standard way to implement this in Ruby.  Is
>> there an
>> easy way to do this?
>>
>> --
>> Posted via http://www.ruby-forum.com/.
>
> A 2-dimensional array is simply an array of arrays. Something like this:
>
> a = Array.new() {Array.new}
>
> Or you could use the Matrix class from "matrix" in the standard library.

A 2 dimensional array as an array of arrays is a lowest common
denominator.  It assumes that I want only to use it as a simple storage
mechanism.  What I want is a 2 dimensional array data structure that has
powerful operating mechanisms such as sorting.  Additionally the way an
array of arrays is treated in Ruby goes against what is intuitive or
expected; and it was my understanding that Ruby was supposed to be
designed to do what "least surprises".

Here is a simple example.

a = Array.new(){Array.new()}
b = [9,8,7]
c = [1,2,3]
a = b
a = c

puts a.sort
=>[[1,2,3],[9,8,7]]

So this allows a sort across the entire array and it should be noted
that it does an index step through comparison so [1,1,2] would come
after [1,1,1].  However this means I am limited to sorting only via this
mechanism.

Based on Ruby syntax I would find this to be intuitive.

a[0..1].sort

The results I would then expect would be
[,]

The results I actually get from this are
[7,8,9]

What is happening is that in a[0..1] a[0..1] is grabbing the subset
of arrays 0 to 1 and then the second index  is indexing back in to
the subset.  What looks like it should be happening is that a[0..1]
is defining the set of the arrays where we wish to retrieve the 0 index.

--
Posted via http://www.ruby-forum.com/.

```