On 07/31/2015 03:02 PM, Gabor Szabo wrote:
The following code (with comments) is confusing me.
Can someone give some explanation please?
Specifically the difference between

my @x = <a b>;

It's the assignment to the Array variable that makes the Array here; < > by itself just creates a Parcel:

$ ./perl6-m -e 'say <a b>.^name'
Parcel
$ ./perl6-m -e 'say (my @ = <a b> ).^name'
Array

# we can assign that array to a scalar variable and it is still and array
my $y = @x;

that's because assignment to $ isn't coercive in the same way as assignment to @ or %.

It just wraps things into a Scalar, which is normally invisible.

But, you can observe the difference still>

my @a = <a b>;
my $s = @a'

for @a { } # two iterations
for $s { } # one iteration

Cheers,
Moritz

Reply via email to