Rod Adams wrote:
TSa (Thomas Sandlaß) wrote:


You mean @a = [[1,2,3]]? Which is quite what you need for multi
dimensional arrays anyway @m = [[1,2],[3,4]] and here you use
of course @m[0][1] to pull out the 2. I'm not sure if this automatically
makes the array multi-dimensional to the type system though. That is
if @m[0,1] returns 2 as well or if it returns the list (1,2) or whatever.
Is @m[0..3] valid and what does it return? And what's the type of that
return value(s)? I can imagine many things ranging from a two element
array of refs to two element arrays up to a flattened list of 4 values.


@m[0,1] is an array slice of two elements, in this case two arrayrefs [1,2], and [3,4].
@m[0;1] is a multidim deref, referencing the 4.

@m[0..3] is valid, returning arrayref x 2, undef x 2.

I think you got these wrong. With @m = ([1,2],[3,4]) these would be true, but with @m = [[1,2],[3,4]] we have an additional reference there.

Here @m has single array-ref, not 2 array-refs.

pugs gives this:

    pugs> my @m = [[1,2],[3,4]]
    ({ref:<Array>})
    pugs> @m[0,1]
    ({ref:<Array>}, undef)
    pugs> @m[0..3]
    ({ref:<Array>}, undef, undef, undef)
    # @m[0;1] form doesn't work in r3723

and

    pugs> my @m = ([1,2],[3,4])
    ({ref:<Array>}, {ref:<Array>})
    pugs> @m[0,1]
    ({ref:<Array>}, {ref:<Array>})
    pugs> @m[0..3]
    ({ref:<Array>}, {ref:<Array>}, undef, undef)

--
Markus Laire

Reply via email to