use strict;
my $anon = [1,3,5,7,9];
my $aref = [\$anon];
print "3rd element: " . $ { $aref } [2] . "\n";
我想在$anon
变量上获取匿名数组$aref
的第n个元素。在代码中我想通过使索引2获得$anon
的第3个元素,但它什么也没有返回。如果我写$ { $aref } [0]
然后它返回类似REF(0x7fd459027ac0)
我如何获得第n个,例如$anon
的第3个元素?
理由:
my @area = (
qw[1 3 5 7 9],
qw[2 4 6 8 0],
qw[a e i u o],
qw[b c d f g]
);
foreach my $row (@area) {
foreach my $cell (@$row)
{
# do some processing on the element
print $cell . " ";
}
print "\n";
}
答案 0 :(得分:3)
如何获取解除引用的匿名数组的第n个元素?
您有太多对运算符的引用。你已经构建了一个三层深度的嵌套结构,难怪你在导航时遇到了麻烦
问题是您的 for (let i = 0; i < 4; i++) {
const promise = this.http.get<any>('https://randomuser.me/api/').toPromise();
promises.push(promise);
}
已经是对匿名数组的引用。方括号$anon
构造一个匿名数组并返回对它的引用
然后你有
[...]
使用一个元素创建对数组的另一个引用:对标量 my $aref = [\$anon]
的引用。
所以你已经构建了这个
$anon
所以
$anon = [1, 3, 5, 7, 9]
$aref = [ \ [1, 3, 5, 7, 9] ]
但是你为什么要使用对数组的引用,特别是对标量的引用?最好从普通数组开始,然后编写
${$aref}[0] is \ [1, 3, 5, 7, 9]
${${$aref}[0]} is [1, 3, 5, 7, 9]
${${${$aref}[0]}}[2] is 5
my @array = ( 1, 3, 5, 7, 9 );
my $aref = \@array;
print $aref->[2];
答案 1 :(得分:1)
你有一个经典的列表清单数据结构,有一个扭曲。您需要获取由$aref
给出的外部数组引用的第一个元素,取消引用结果,然后获取该表达式返回的内部数组引用的 n 元素。这应该可以解决问题:
${ $aref->[0] }->[2]
您可能需要仔细阅读perllol,甚至可能阅读perlref以获取更多信息和想法。如果您可以控制此数据结构,则可以使用更好的方法来构建它。例如,如果它是这样构建的:
my $anon = [1, 3, 5, 7, 9]; # a reference to an anonymous array
my $aref = [$anon]; # a reference to an anonymous array containing only the above reference
你可以这样做:
$aref->[0][2]