对于下面的多个下标脚本:
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;
我收到了以下错误信息:
Ambiguous call to 'Screen_get_valid_string';
these signatures all match:
:($prompt, $accept_empty_string, $max_length = 999)
:($prompt, $max_length = 999)
我发现调用正确的多子程序的唯一方法是使用命名参数:
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(prompt => "enter value for string => ", accept_empty_string => True);
say 'return is ', $return;
结果是:
return is abc
谢谢。
顺便提一下,我之前在Perl5中有工作经验,现在开始接触Perl6。
sub Screen_get_valid_string( Str() $prompt, Int :$max_length = 999, Bool :$accept_empty_string = False )
- Scimon Proctor