gpt4 book ai didi

Perl 函数 : accept hash, 数组,或标量作为参数

转载 作者:行者123 更新时间:2023-12-02 01:15:02 28 4
gpt4 key购买 nike

我有以下子例程。

 sub Function{
my $ref = \($_[0]);
if(ref($ref) eq 'SCALAR'){
. . .
}
}

我试图让它工作,以便将列表、标量或散列传递给它,它会将其转换为引用,并取决于该引用是否属于 ARRAY 类型SCALARHASH,执行不同的操作。

它可以被称为

Function(%a)
Function($a)
Function(@a)

如何使 $ref 成为对传递给 Function 的任何内容的引用?我目前的方法不起作用。

最佳答案

Function(%a)
Function($a)
Function(@a)

你不能按照你的要求去做。 Function 内部无法确定传递的是数组还是散列,因为事实上,您不能首先将数组或散列传递给子程序。你只能传递一个列表;哈希和数组在上面的子调用中被转换为列表。

您应该首先传递对函数的引用:

Function(\%a)
Function($a)
Function(\@a)

然后你可以很容易地检查它是什么:

sub Function {
my $param = shift;
if (not ref $param) {
...
} elsif (ref $param eq 'HASH') {
...
} elsif (ref $param eq 'ARRAY') {
...
}

关于Perl 函数 : accept hash, 数组,或标量作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583612/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com