perl - 如何在签名中声明可选参数?

标签 perl subroutine optional-parameters function-signature

假设我有

use v5.026;
use feature 'signatures';

sub foo ($opt1, $opt2) {
  say $opt1 if $opt2;
}

main::foo(1,2);
main::foo(1);

现在我想在有和没有 opt2 的情况下调用 foo:

foo(1);    # not currently accepted
foo(1,2);  # works fine

最佳答案

带有子例程签名的可选参数需要一个定义的默认值,这由 = default_value_expression 完成。您可以将其硬设置为 undef:

sub foo ($opt1, $opt2 = undef) {
  say $opt1 if $opt2;
}

关于perl - 如何在签名中声明可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507624/

相关文章:

windows - 获取链接速度 - Win32_PerfRawData_Tcpip_NetworkInterface

xml - 无法读取子内部的公共(public)标量

arrays - 将大值传递给模块

Powershell:使用参数集重载 C# 风格的函数?

php - 调用参数不足的 PHP 函数有什么规则?

multithreading - 将 IO::Async 与矢量化 STDIN 一起使用

regex - Perl 中用于替换的匹配数字

java - 在 .NET 中运行 Java、Python、Ruby 和 Perl 程序

string - 在 Perl 中将所有参数作为字符串传递给子例程

c - 如何知道 va_list 的最后一个参数?