You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl6数组如何过滤掉Any类型的空槽?

过滤Perl 6数组中的Any类型空槽

好问题!你已经知道纯字符串数组里用grep(Str)清理delete操作后留下的Any空槽,那混合类型数组的情况其实也很容易处理——核心就是精准过滤掉Any类型的元素就行。

先回顾一下你提到的纯Str数组场景,代码整理如下:

my @prov_cd = <AB BC MB NB NL NS ON PE QC SK>;
@prov_cd[2]:delete; # 删除Manitoba对应的元素
say @prov_cd; # 输出: [AB BC (Any) NB NL NS ON PE QC SK]

my @prov_cd_cleanup = @prov_cd.grep(Str); # 过滤掉非Str的Any空槽
say @prov_cd_cleanup; # 输出: [AB BC NB NL NS ON PE QC SK]
@prov_cd = @prov_cd_cleanup;

如果数组包含多种对象类型,只想清除Any空槽、保留其他所有类型的元素,你可以直接检查元素是否不属于Any类型:

混合类型数组过滤示例:

# 混合类型数组,包含字符串、整数、哈希和一个待删除的元素
my @mixed_array = <AB BC>, 42, {:city<Toronto>}, 'NL', 'QC';
@mixed_array[2]:delete; # 删除哈希元素,留下Any空槽
say @mixed_array; # 输出: [AB BC (Any) NL QC]

# 过滤掉所有Any类型的元素
my @cleaned_array = @mixed_array.grep(* !~~ Any);
say @cleaned_array; # 输出: [AB BC NL QC]

这个方法的优势在于不限制保留元素的类型——不管是字符串、数字、哈希还是其他自定义对象,只要不是Any都会被保留,完美适配混合类型数组的场景。

内容的提问来源于stack exchange,提问作者pcarrier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:40:27