在角色 Setty 中§
有关方法 pickpairs 的主要文档,请参阅上下文
multi method pickpairs(Setty: --> Pair)multi method pickpairs(Setty: --> Seq)
根据被调用方法的候选项,返回一个 Pair
或一个 Seq
的 Pair
。返回的每个 Pair
都有一个调用者的元素作为其键,并以 True
作为其值。与 grabpairs 相反,元素是“挑选”出来的,没有替换。
如果将 *
作为 $count
传递,或者 $count
大于或等于调用者的 元素 数量,则调用者的所有元素/True
Pair
都将以随机顺序返回;即它们被打乱返回;
请注意,每次调用 pickpairs
都会维护其私有状态,并且不会影响后续的 pickpairs
调用。
my = set (4, 2, 3);say .pickpairs; # OUTPUT: «4 => True»say .pickpairs(1); # OUTPUT: «(3 => True)»say .pickpairs(*); # OUTPUT: «(2 => True 4 => True 3 => True)»
在角色 Baggy 中§
有关方法 pickpairs 的主要文档,请参阅上下文
multi method pickpairs(Baggy: --> Pair)multi method pickpairs(Baggy: --> Seq)
返回一个 Pair
或一个 Seq
的 Pair
,具体取决于所调用方法的版本。返回的每个 Pair
都将调用方的元素作为其键,将元素的权重作为其值。元素被“挑选”出来,并且不会被替换。如果将 *
作为 $count
传递,或者 $count
大于或等于调用方的 元素 数量,则调用方中的所有元素/权重 Pair
都将以随机顺序返回。
请注意,每次调用 pickpairs
都会维护其私有状态,并且不会影响后续的 pickpairs
调用。
my = bag <eggs bacon bacon bacon>;say .pickpairs; # OUTPUT: «eggs => 1»say .pickpairs(1); # OUTPUT: «(bacon => 3)»say .pickpairs(*); # OUTPUT: «(eggs => 1 bacon => 3)»