Arrays 循环通过从哈希表检索的数组
我有一个包含以下内容的哈希表:Arrays 循环通过从哈希表检索的数组,arrays,perl,hashtable,Arrays,Perl,Hashtable,我有一个包含以下内容的哈希表: my %hash = ( 'a' => 1, 'b' => 2, 'c' => [3, 4, 5], ); 稍后,我将把$hash{c'}拉入@array_c作为获取函数的一部分,例如: sub getVar { my $id = shift; return $hash{$id}; } my @array_c = getVar('c'); 然后,稍后我将尝试循环遍历@array\u c,并打印每一行: foreach (
my %hash = (
'a' => 1,
'b' => 2,
'c' => [3, 4, 5],
);
稍后,我将把$hash{c'}
拉入@array_c
作为获取函数的一部分,例如:
sub getVar {
my $id = shift;
return $hash{$id};
}
my @array_c = getVar('c');
然后,稍后我将尝试循环遍历@array\u c
,并打印每一行:
foreach (@array_c){
print "$_";
}
然而,我得到的不是所需的345
输出,而是数组(0x100804ed0)
请帮忙:D
编辑:
如果我打印@array\u c[0]->[0],那么我会得到3
,所以我想我对如何创建嵌套数组有点困惑
已解决:
继续延迟阵列:
my @array_c = @{getVar('c')};
子getVar
返回对数组的引用,只需取消引用即可:
my @array_c = @{getVar('c')};
或更改子项:
sub getVar {
my $id = shift;
return @{$hash{$id}};
}
子getVar
返回对数组的引用,只需取消引用即可:
my @array_c = @{getVar('c')};
或更改子项:
sub getVar {
my $id = shift;
return @{$hash{$id}};
}
[3,4,5]
是arrayref,而不是数组。相应地修改您的代码:
my $c_arrayref = getVar('c');
foreach (@{ $c_arrayref }) {
阅读和阅读。
[3,4,5]
是一个arrayref,而不是一个数组。相应地修改您的代码:
my $c_arrayref = getVar('c');
foreach (@{ $c_arrayref }) {
阅读并。仅使用数组引用作为引用:
my $array_c = getVar('c');
...
foreach (@$array_c){
print "$_";
}
或在getVar中取消对哈希中存储的数组引用的引用:
sub getVar {
my $id = shift;
return @{ $hash{$id} };
}
或其调用方:
my @array_c = @{ getVar('c') };
仅使用数组引用作为引用:
my $array_c = getVar('c');
...
foreach (@$array_c){
print "$_";
}
或在getVar中取消对哈希中存储的数组引用的引用:
sub getVar {
my $id = shift;
return @{ $hash{$id} };
}
或其调用方:
my @array_c = @{ getVar('c') };
您的
getVar
return wantarray ? map { ref() eq 'ARRAY' ? @$_ : $_ } $hash{ $id }
: $hash{ $id }
;
您的
getVar
return wantarray ? map { ref() eq 'ARRAY' ? @$_ : $_ } $hash{ $id }
: $hash{ $id }
;