In Damian's excellent perl6 talk, I think he said that by default a hash
in list context will return a list of pairs. Hence this
@array = %hash
for %hash with n keys would give an array of n elements, all pairs.
If you want the perl5 tradition of a list alternating key,value,key,value...
you'd say
@kv_array = %hash.kv
which would give an array of 2n elements.
What I'm not clear about is what happens the other way.
If I then write
%hash2 = @array
presumably %hash2 is a copy of %hash, with each pair in @array initialising
one key and value in %hash2
But what happens if I write
%hash3 = @kv_array
Is perl6 going to spot that @kv_array has an even number of entries, all
are scalars (no pairs), and so do this
for @kv_array -> key, value {
%hash3{$key} = $value;
}
Or is it going to treat non-pairs like this:
for @kv_array -> key {
%hash3{$key} = undef; # Or some other suitable default
}
or what?
And what happens if I write
%hash4 = ("Something", "mixing", pairs => and, "scalars");
Nicholas Clark
--
Even better than the real thing: http://nms-cgi.sourceforge.net/