我想删除SetHash的任何元素,以便返回其值:

my SetHash $a;
$a<m n k> = 1..*;
my $elem = $a.mymethod;
say $elem; # n
say $a; # SetHash(m k)

我可以分两个步骤进行操作,如下所示。有没有更好的办法?

my $elem = $a.pick;
$a{$elem}--;

顺便说一句,是否有更惯用的方式将多个元素添加到SetHash中?

以下是否更好?

my SetHash $a;
$a{$_}++ for <m n k>;

要么

my SetHash $a;
$a<m n k> X= True;

最佳答案

由于您想从集合中删除任何随机元素并返回您得到的值,因此我建议在Setty事物上使用grab方法(仅适用于可变集合,例如SetHash):https://docs.perl6.org/type/SetHash#(Setty)_method_grab

取决于您需要的确切返回值,抓斗对可能更好。

09-26 07:59