加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 推送到阵列引用

发布时间:2020-12-15 21:22:15 所属栏目:大数据 来源:网络整理
导读:是否可以推送到Perl中的数组引用?谷歌已经建议我首先尊重阵列,但这并不真正有效。它推送到引用的数组,而不是引用的数组。 例如, my @a = ();my $a_ref = [@a];push(@$a_ref,"hello");print $a[0]; @a将不会更新,并且该代码将失败,因为该数组仍为空 (我
是否可以推送到Perl中的数组引用?谷歌已经建议我首先尊重阵列,但这并不真正有效。它推送到引用的数组,而不是引用的数组。

例如,

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变量指向列表@a的内存位置。推动影响存储器位置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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读