diff options
Diffstat (limited to 'mergehash.p6')
-rw-r--r-- | mergehash.p6 | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/mergehash.p6 b/mergehash.p6 new file mode 100644 index 0000000..84ef007 --- /dev/null +++ b/mergehash.p6 @@ -0,0 +1,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; + } +}
\ No newline at end of file |