在角色 Setty 中§

有关方法 pickpairs 的主要文档,请参阅上下文

multi method pickpairs(Setty:D: --> Pair:D)
multi method pickpairs(Setty:D: $count --> Seq:D)

根据被调用方法的候选项,返回一个 Pair 或一个 SeqPair。返回的每个 Pair 都有一个调用者的元素作为其键,并以 True 作为其值。与 grabpairs 相反,元素是“挑选”出来的,没有替换。

如果将 * 作为 $count 传递,或者 $count 大于或等于调用者的 元素 数量,则调用者的所有元素/True Pair 都将以随机顺序返回;即它们被打乱返回;

请注意,每次调用 pickpairs 都会维护其私有状态,并且不会影响后续的 pickpairs 调用。

my $numbers = set (423);
say $numbers.pickpairs;                           # OUTPUT: «4 => True␤» 
say $numbers.pickpairs(1);                        # OUTPUT: «(3 => True)␤» 
say $numbers.pickpairs(*);                        # OUTPUT: «(2 => True 4 => True 3 => True)␤»

在角色 Baggy 中§

有关方法 pickpairs 的主要文档,请参阅上下文

multi method pickpairs(Baggy:D: --> Pair:D)
multi method pickpairs(Baggy:D: $count --> Seq:D)

返回一个 Pair 或一个 SeqPair,具体取决于所调用方法的版本。返回的每个 Pair 都将调用方的元素作为其键,将元素的权重作为其值。元素被“挑选”出来,并且不会被替换。如果将 * 作为 $count 传递,或者 $count 大于或等于调用方的 元素 数量,则调用方中的所有元素/权重 Pair 都将以随机顺序返回。

请注意,每次调用 pickpairs 都会维护其私有状态,并且不会影响后续的 pickpairs 调用。

my $breakfast = bag <eggs bacon bacon bacon>;
say $breakfast.pickpairs;                         # OUTPUT: «eggs => 1␤» 
say $breakfast.pickpairs(1);                      # OUTPUT: «(bacon => 3)␤» 
say $breakfast.pickpairs(*);                      # OUTPUT: «(eggs => 1 bacon => 3)␤»