gpt4 book ai didi

arrays - 为什么我可以将此视为引用并将其视为标量来打印?

转载 作者:行者123 更新时间:2023-12-04 16:27:24 26 4
gpt4 key购买 nike

在以下 perl 片段中:

my $a1 = [ qw(rock pop musical) ];  
my $b1 = [ qw( mystery action drama )];
my $c1 = [ qw( biography novel periodical)];

my @a2d = (
$a1,
$b1,
$c1
);
@a2d是一个包含对数组的引用的数组。
我的问题是为什么以下打印相同的东西( musical )?:
print ${$a2d[0]}[2],"\n";  
print $a2d[0][2],"\n";

我希望第二个打印 ARRAY 或给出错误,因为数组的元素是引用

最佳答案

$a2d[0]是一个数组引用。我们可以获取这个数组引用并打印出第三个条目:

my $ref = $a2d[0];
say ${ $ref }[2];
say $ref->[2];

这些形式是等价的。现在,我们可以去掉那个中间变量,得到:
say ${ $a2d[0] }[2];
say $a2d[0]->[2];

如果解引用运算符 ->出现在两个下标之间,那么它可以作为快捷方式省略:
say $a2d[0][2];

当左下标为 [...]时,箭头可以省略或 {...}和右下标它 [...] , {...}(...) .

这也在 perlreftut 中有解释,它更深入地讨论了这些考虑因素。阅读该文件应该可以解决许多问题。

关于arrays - 为什么我可以将此视为引用并将其视为标量来打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19339429/

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