arrays - 如何制作一个接受数组 * 或 * 可变数量标量的子程序?

标签 arrays perl scalar

我正在寻找一个子程序 mysub其行为应使以下两个调用实际上相同。

mysub(["values", "in", "a", "list"]);
mysub("Passing", "scalar", "values");

使这种情况发生的正确语法是什么?

最佳答案

检查是否 @_包含单个数组引用。

sub mysub {
    if ( @_ == 1 && ref( $_[0] ) eq 'ARRAY' ) {
        # Single array ref
    } else {
        # A list
    }
}
if子句使用 ref 检查是否只传递了一个参数并且该参数是数组引用。 .为确保案例相同:
sub mysub {
    if ( @_ == 1 && ref( $_[0] ) eq 'ARRAY' ) {
        @_ = @{ $_[0] };
    }
    # Rest of the code
}

关于arrays - 如何制作一个接受数组 * 或 * 可变数量标量的子程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5278021/

相关文章:

arrays - 创建自定义类的数组并初始化它问题

c# - 从字符串数组中替换所有出现的字符串

javascript - 使用 JSON 数据获取特定值的特定颜色

java - 如何从 Java 中的 SourceDataLine 获取字节数组的体积

perl - 使用 Perl 循环中的变量在 Perl 循环中运行 shell 命令

html - Perl 网络抓取工具,从脚本标签内的文本中检索数据

Hibernate Criteria contains-in 与表的关联

json - WWW::Wunderground::API 无法保佑 无引用值(value)

PHP7 : shouldn't a scalar return type declaration accept integer?

r - 如何将r中的数据框从正数转换为负数