Eva*_*oll 3 perl optional-parameters subroutine function-signature
让我说我有
use v5.026;
use feature 'signatures';
sub foo ($opt1, $opt2) {
say $opt1 if $opt2;
}
main::foo(1,2);
main::foo(1);
Run Code Online (Sandbox Code Playgroud)
现在我想foo使用和不使用opt2 进行呼叫:
foo(1); # not currently accepted
foo(1,2); # works fine
Run Code Online (Sandbox Code Playgroud)
带子程序签名的可选参数需要使用定义的默认值= default_value_expression.您可以将其设置为undef:
sub foo ($opt1, $opt2 = undef) {
say $opt1 if $opt2;
}
Run Code Online (Sandbox Code Playgroud)