gpt4 book ai didi

arrays - 循环遍历哈希中包含的数组

转载 作者:行者123 更新时间:2023-12-01 23:20:41 25 4
gpt4 key购买 nike

所以我有一个包含数组的对象:

package MyObject;

sub new {
my($type) = @_;
my $self->{Params}{Status}{Packages} = [];
}

我有一个添加新的包子,它附加到这个“Package”数组上,如下所示:

sub add_package {
my($self, $package_obj) = @_;

push $self->{Params}{Status}{Packages}, $package;
}

现在,当我去查找数组中的所有包时,我遇到了问题。每当我尝试像这样取出包时:

foreach my $package($self->{Params}{Status}{Packages}) {
# do something with $package.
}

这只循环一次。现在,根据我的理解,哈希实际上存储了一个指向数组的指针,所以我尝试这样做:

foreach my $package(@$self->{Params}{Status}{Packages}) {
# do something with $package.
}

但随后出现错误,指出 $self 不是数组。我确实注意到了:

scalar $self->{Params}{Status}{Packages};

它返回:

@ARRAY(0xSome Address);

我错过了什么?如何使用 foreach 循环来遍历我的数组?

最佳答案

$self->{Params}{Status}{Packages}reference用 Perl 术语来说,是一个数组。当您引用某物时,请将正确的字符放在它前面 dereference it 。如果引用不仅仅是一个前面可能有一些符号的名称,则需要用大括号将其括起来。这是一个优先级问题:@$self->{Params}{Status}{Packages} 被解析为 (@$self)->{Params}{Status}{Packages},但你需要

@{$self->{Params}{Status}{Packages}}

即表达式$self->{Params}{Status}{Packages}引用的数组。

关于arrays - 循环遍历哈希中包含的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349499/

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