小编pca*_*ier的帖子

Perl6; 多子

对于以下多子脚本:

multi sub Screen_get_valid_string($prompt, $accept_empty_string, $max_length = 999) { return "abc" }
multi sub Screen_get_valid_string($prompt, $max_length = 999)                       { return "def" }

my $return = Screen_get_valid_string("enter value for string => ", True);

say 'return  is ', $return;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Ambiguous call to 'Screen_get_valid_string';
these signatures all match:
:($prompt, $accept_empty_string, $max_length = 999)
:($prompt, $max_length = 999)
Run Code Online (Sandbox Code Playgroud)

我发现有一个正确的多子调用的唯一方法是使用命名参数:

multi sub Screen_get_valid_string(:$prompt, :$accept_empty_string, :$max_length = 999) { return "abc" }
multi sub Screen_get_valid_string(:$prompt, :$max_length = 999)                        { return "def" }


my $return = …
Run Code Online (Sandbox Code Playgroud)

signature perl6

8
推荐指数
2
解决办法
157
查看次数

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"所有不是(任何)的东西.

我怎样才能做到这一点 ?

谢谢.

arrays perl6

6
推荐指数
2
解决办法
87
查看次数

标签 统计

perl6 ×2

arrays ×1

signature ×1