aboutsummaryrefslogtreecommitdiff
path: root/mergehash.p6
blob: 84ef00713dfa7d4c21907dfa2a68c0dab88010f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use MONKEY;
my %a;
my %b;
#%a<Z> = "orig";
#%b<Z> = "new";
%a<b> = 1;
%b<a> = 2;
%a<y><z> = 2;
%b<y><a> = 1;
%a.merge(%b).say;
say %b;
augment class Hash {
    method merge (%b) {
        hashmerge self, %b;
        self;
    }
    sub hashmerge (%merge-source, %merge-into) {
        for %merge-source.keys {
            if %merge-into{$_}:exists {
                hashmerge %merge-source{$_}, %merge-into{$_}; 
            }
            else {
                %merge-into{$_} = %merge-source{$_};
            }
        }
        %merge-into;
    }
}