perl6:数组; 摆脱空槽(任何)

pca*_*ier 6 arrays perl6

对于只包含Str元素的Array,我可以使用grep(Str)来消除a:delete之后的空槽;

例如:

my @prov_cd = <AB BC MB NB NL NS ON PE QC SK>;

@prov_cd[2]:delete;                              # Manitoba deleted

@prov_cd;                                        # [AB BC (Any) NB NL NS ON PE QC SK]

my @prov_cd_cleanup = @prov_cd.grep(Str);        # get rid of (Any) empty slot: [AB BC NB NL NS ON PE QC SK]

@prov_cd = @prov_cd_cleanup;                     # [AB BC NB NL NS ON PE QC SK]
Run Code Online (Sandbox Code Playgroud)

Array可以包含各种对象类型; 我宁愿"grep"所有不是(任何)的东西.

我怎样才能做到这一点 ?

谢谢.

nxa*_*adm 5

这样做:

@prov_cd.grep(*.defined) (AB BC NB NL NS ON PE QC SK)

或者,你可以看看拼接.


Chr*_*oph 5

首先,请注意,如果您通过拼接而不是删除条目:delete,则项目将被移动,并且不会生成"洞".

现在,如果你真的想要过滤掉Any,你可以通过

@prov_cd.grep(* !=== Any)
Run Code Online (Sandbox Code Playgroud)

但是,我怀疑你在寻找

@prov_cd.grep(*.defined)
Run Code Online (Sandbox Code Playgroud)