gpt4 book ai didi

arrays - 为什么 Perl 不允许我将哈希引用的成员取消引用到数组中?

转载 作者:行者123 更新时间:2023-12-02 03:42:52 25 4
gpt4 key购买 nike

Perl 术语让我感到困惑,而且它不是我的母语,所以请耐心等待。我会尝试使用正确的术语,但我会举一个例子来确保。

所以我在变量 $foo 中有一个哈希引用。假设 $foo->{'bar'}->{'baz'} 是一个数组引用。也就是说,我可以通过将 $foo->{'bar'}->{'baz'}->[0] 分配给标量来获取数组的第一个成员。

当我这样做时:

foreach (@$foo->{'bar'}->{'baz'})
{
#some code that deals with $_
}

我收到错误“在 script.pl 第 41 行不是 ARRAY 引用”

但是当我这样做时它会起作用:

$myarr = $foo->{'bar'}->{'baz'};
foreach (@$myarr)
{
#some code that deals with $_
}

有什么我不明白的地方吗?有什么方法可以让第一个示例正常工作吗?我尝试将表达式括在括号中,并在外面加上@,但这不起作用。提前感谢您的帮助。

最佳答案

这只是一个优先级问题。

@$foo->{'bar'}->{'baz'}

表示

( ( @{ $foo } )->{'bar'} )->{'baz'}

$foo 不包含数组引用,因此出现错误。如果您不省略引用表达式周围的可选花括号,则不会遇到优先级问题。

@{ $foo->{'bar'}->{'baz'} }

关于arrays - 为什么 Perl 不允许我将哈希引用的成员取消引用到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679019/

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