Ingo Blechschmidt skribis 2005-09-09 11:59 (+0000):
> > > > \(@array,) is [ @array ], NOT map { \$_ } @array
> > > I'm not sure of the []s, remember &postcirumfix:<[ ]> creates *new*
> > > containers:
> > That was the point.
> > > [EMAIL PROTECTED] = $bar;
> > > (@array,)[0] = $bar;
> > AFAIK, these are the same thing, because the left side of [0] is in
> > Array context, which is a scalar context, in which comma creates a new
> > anonymous array ref.
> To prevent misconceptions: You think that both
> [EMAIL PROTECTED] = $bar; # and
> (@array,)[0] = $bar;
> change @array[0] to $bar, right?
No, neither does.
[EMAIL PROTECTED] = $bar fills a new array with the elements of @array, and then
overwrites the first. The array is then discarded.
(@array,)[0] = $bar does the same, IIRC, because the LHS of .[0] is
object and thus scalar context, possibly specifically Array context, and
the comma operator then behaves as if it has [] around it: it creates an
anonymous array. Again, it's just the elements of @array that are used.
Now, (@array)[0] = $bar does assign to @array[0].
I think the comma operator in scalar context should not create arrays,
because that is wildly confusing for most people, and a dangerous trap
even for those who do grok it. We already have [] for creating anonymous
arrays, and here a second WTDI isn't buying us anything. Especially the
apparent similarity in the different (@array) and (@array,) is something
we should try to avoid.
> (my $arrayref = [1,2,3])[1] = 42;
[1, 42, 3]. With () for grouping, not lists, and [] working on
references as well as the original, you're assigning to $arrayref[1],
not the nonexistent second element of the nonexistent list.
> sub *postcircumfix:<[ ]> ([EMAIL PROTECTED]) {
Do postfix list operators exist in Perl 6? AFAIK, the only thing that
can create a list is list context, and I'm very unsure how anything that
can handle both a list and an item can be postfix.
> And, presuming that I've understood you correctly
Which I don't think you have.
Juerd
--
http://convolution.nl/maak_juerd_blij.html
http://convolution.nl/make_juerd_happy.html
http://convolution.nl/gajigu_juerd_n.html