假设我们有以下子程序:
sub test($arg = 'defaut value') { say $arg }
我们希望传递一些参数,使子程序使用默认值,如下所示:
my $undefined-value;
test $undefined-value // Nil; # don't work, prints "Nil"
如何以最惯用的方式实现这一点?
我找到了这个解决方案,但它看起来有点奇怪:
test |($undefined-value // Empty); # works, print "defaut value"
我想最惯用的方式是:
这将允许你传递任何未定义的值作为参数
或者,您可以使用多项:
第一个候选将捕获任何未定义的值,然后在没有任何参数的情况下调用该候选,然后将设置默认值。