【发布时间】:2020-03-26 18:43:07
【问题描述】:
常见问题,Int Raku,如何合并、组合两个哈希?
说:
my %a = 1 => 2;
my %b = 3 => 4, 5 => 6
如何获得%c = 1 => 2, 3 => 4, 5 => 6?
【问题讨论】:
-
你想用重复键(如果有的话)做什么?
-
@vonbrand,覆盖它们
标签: raku
常见问题,Int Raku,如何合并、组合两个哈希?
说:
my %a = 1 => 2;
my %b = 3 => 4, 5 => 6
如何获得%c = 1 => 2, 3 => 4, 5 => 6?
【问题讨论】:
标签: raku
假设:
my %a = 1 => 'a', 3 => 4;
my %b = 1 => 'b', 5 => 6;
say %(|%a, |%b); # {1 => b, 3 => 4, 5 => 6}
say %().append(%a).append(%b); # {1 => [a b], 3 => 4, 5 => 6}
my %c = %a, %b; say(%c); # {1 => b, 3 => 4, 5 => 6}
【讨论】:
say %().append(%a).append(%b); 在几个方面都很狡猾。首先,以非常轻微的方式;如果您在程序/模块的开头写use v6.c; 'a' ~~ /a/; 或使用仅支持6.c 的旧Rakudo,您的代码将由于%() 在6.c 中具有不同的含义而中断。更重要的是,在任何版本中,如果%a 和%b 共享至少一个密钥,那么您将获得与say %(|%a, |%b); 不同的结果。有关详细信息,请参阅您链接的 append 文档。
my %c = %a,%b 注意%b 中的键将领先。