合并哈希(乐)

tin*_*ino 7 raku

FAQ,Int Raku,如何合并,合并两个哈希?

说:

my %a = 1 => 2;
my %b = 3 => 4, 5 => 6
Run Code Online (Sandbox Code Playgroud)

如何获得%c = 1 => 2, 3 => 4, 5 => 6

tin*_*ino 5

  1. 使用Slip 前缀 |
  2. 使用加哈希方法
  3. 使用中缀,运算符

假设:

my %a = 1 => 'a', 3 => 4;
my %b = 1 => 'b', 5 => 6;
Run Code Online (Sandbox Code Playgroud)
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}
Run Code Online (Sandbox Code Playgroud)

  • `my %c = %a,%b` ,但需要注意的是 `%b` 中的键将领先。 (8认同)
  • `say %().append(%a).append(%b);` 在几个方面都是狡猾的。首先,以一种非常轻微的方式;如果你写“use v6.c;” 'a' ~~ /a/;` 在程序/模块的开头,或者使用仅支持 `6.c` 的旧 Rakudo,您的代码将因 `%()` 在 `6.c` 中具有不同的含义而中断。 c`。更重要的是,在任何版本中,如果 `%a` 和 `%b` 共享至少一个键,那么您将得到与 `say %(|%a, |%b);` 不同的结果。有关详细信息,请参阅您链接的“append”文档。 (5认同)