gpt4 book ai didi

perl - 推送至阵列引用

转载 作者:行者123 更新时间:2023-12-03 08:54:18 25 4
gpt4 key购买 nike

是否可以在Perl中将push转换为数组引用? Googling建议我首先引用该数组,但这实际上不起作用。它推送到引用的数组,而不是引用的数组。

例如,

my @a = ();

my $a_ref = [@a];

push(@$a_ref,"hello");

print $a[0];
@a将不会更新,并且此代码将失败,因为数组仍然为空

(我仍在学习Perl引用,所以这可能是一个非常简单的问题。

最佳答案

考虑内存地址而不是变量名可能会有所帮助。

my @a = ();       # Set aside memory address 123 for a list.

my $a_ref = [@a]; # Square brackets set aside memory address 456.
# @a COPIES the stuff from address 123 to 456.

push(@$a_ref,"hello"); # Push a string into address 456.

print $a[0]; # Print address 123.

字符串进入另一个存储位置。

而是将 $a_ref变量指向list @a的内存位置。 push影响内存位置123。由于 @a也引用内存位置123,因此其值也会更改。
my $a_ref = \@a;       # Point $a_ref to address 123. 
push(@$a_ref,"hello"); # Push a string into address 123.
print $a[0]; # Print address 123.

关于perl - 推送至阵列引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3054822/

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