On 06/13/2014 08:15 PM, Kamil Kułaga wrote:
> Ok got it. But solution is neither more readable nor faster (IMHO only
> -> I didn't benchmark it)
>
>
> class A { has $.a; has $.b };
> my @array = A.new(a=>'a', b=>'11'),
>     A.new(a=>'a', b=>'22'),
>     A.new(a=>'v', b=>'33'),
>     A.new(a=>'w', b=>'44'),
>     A.new(a=>'v', b=>'55');
>
> my %h = @array.map({
>     my $var = .a;
>     $var => %(@array.grep({.a eq $var}).map({.b => $_}))
>            });
>
> say %h<a>.perl;
>
> my %hash;
> for @array -> $elem {
>     %hash{$elem.a}{$elem.b} =$elem;
> }
>
>
> say "Reference\n" ~ %hash<a>.perl;

Dear Kamil,

the method "categorize", as specced in
http://perlcabal.org/syn/S32/Containers.html#categorize will allow you
to return a parcel from the "categorization" you provide (such as -> $_
{ (.a, .b) }) and build a multi-leveled hash.

Sadly, I wasn't able to make it work right away.

Cheers,
  - Timo

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to