develooper Front page | perl.perl6.language | Postings from May 2005

Re: (1,(2,3),4)[2]

Thread Previous | Thread Next
From:
Markus Laire
Date:
May 26, 2005 01:05
Subject:
Re: (1,(2,3),4)[2]
Message ID:
429582D9.6060804@laire.info
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

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About