gpt4 book ai didi

perl - 如何从函数返回值中使用 Perl keys()?

转载 作者:行者123 更新时间:2023-12-03 22:47:23 26 4
gpt4 key购买 nike

我知道 Perl keys()函数并想在我拥有的散列上使用它,但没有看到任何为它设置变量的理由。让我在代码中解释两种方式:

普通的:

my %hash = ReturnsHash();
foreach (keys(%hash)) {
...code...
}

我想要的方式:
foreach (keys(ReturnsHash())) {
...code...
}

使用第二种方式我收到此错误消息( Type of arg 1 to keys must be hash or array (not subroutine entry) ) 第二种方式可能吗?如果是这样怎么办?

最佳答案

与其名称相反,ReturnsHash不返回哈希值。子程序不可能返回哈希值。 Subs 只能返回标量列表。如果你这样做

sub ReturnsHash {
my %hash = ( a => 1, b => 2 );
return %hash;
}

你正在做的
return 'a', 1, 'b', 2;

既然你做不到
keys('a', 1, 'b', 2)

你不能做
keys(ReturnsHash())

现在,您可以做的是返回对哈希的引用
sub ReturnsHashRef {
my %hash = ( a => 1, b => 2 );
return \%hash;
}

又名
sub ReturnsHashRef {
return { a => 1, b => 2 };
}

在这种情况下你可以做
keys(%{ ReturnsHashRef() })

关于perl - 如何从函数返回值中使用 Perl keys()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229870/

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