如何在Perl 6中组合两个SetHashes?

时间:2017-12-01 12:19:28

标签: perl6

给定两个SetHash es,其中一个或两个都可以为空。我想将第二个SetHash的所有元素添加到第一个元素中。

由于union operator的输出是Set,我设法做到的唯一(也可能不是最好的)方法如下:

my SetHash $s1 = <a b c>.SetHash;
my SetHash $s2 = <c d e>.SetHash;
$s1 = ($s1 (|) $s2).SetHash; # SetHash(a b c d e)

UPD:可能这更简单,但必须转换为.keys会让我感到不舒服。

$s1{ $s2.keys } X= True; # SetHash(a b c d e)

1 个答案:

答案 0 :(得分:3)

我希望Elizabeth Mattijsen能够阅读您的问题和答案,并发表评论或提供自己的答案。与此同时,这是我最好的镜头:

0

Elizabeth在Rakudo 2017.11编译器版本中为使用my %s1 is SetHash = <a b c> ; my %s2 is SetHash = <c d e> ; %s1 = |%s1, |%s2 ; # SetHash(a b c d e) sigil声明的变量(即声明其主要性质为Associative的变量)实现了is Set(和cousins)功能。

前缀%,用在一个参数列表的表达式中,&#34;展平&#34;如果所述单个参数是复合的,则为单个参数(relevant doc声明它必须是|CapturePairList或{{1} }):

Map