【问题标题】:Merge Hash (Raku)合并哈希(Raku)
【发布时间】: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


【解决方案1】:
  1. 使用Slipprefix |
  2. 使用append哈希方法
  3. 使用infix , operator

假设:

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 中的键将领先。
  • 我用你的 cmets 更新我的答案。谢谢你们。
猜你喜欢
  • 1970-01-01
  • 2014-04-16
  • 2016-09-02
  • 2012-09-16
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2020-03-28
相关资源
最近更新 更多