大佬教程收集整理的这篇文章主要介绍了Perl:特殊数组@_不是真的别名吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#!/usr/bin/perl use warnings; use Strict; $\="\n"; sub func { print \@_; $_++ for(@_); } my @arr=(2..4); print \@arr; func(@arr); print "@arr";
对于上述程序,我预计@arr和@_的引用指向相同的位置,因为它是一个别名.但是不是这样.
运行以上:
ARRAY(0x1b644d0) ARRAY(0x1b644e0) 3 4 5
如果他们指向2个不同的位置,@_中的更改如何在@arr中反映?
我看到有什么不对吗请指教.
@H_675_14@use warnings; use Strict; $\="\n"; sub func { print \@_; $_++ for(@_); print \$_ for @_; } my @arr=(2..4); print \@arr; func(@arr); print "@arr"; print \$_ for @arr;
产量
ARRAY(0x17fcba0) ARRAY(0x1824288) SCALAR(0x17fcc48) SCALAR(0x18196f8) SCALAR(0x1819710) 3 4 5 SCALAR(0x17fcc48) SCALAR(0x18196f8) SCALAR(0x1819710)
如你所见,单个参数具有相同的地址,但容器不一样.如果您在func中将某项推送到@_,则@arr不会更改(因此您可以在功能上进行移动).因此,每个参数都是别名,数组元素作为单个项目传递. @_包含传入子程序的所有项目.如果要修改数组参数,则需要通过引用传递它.
@H_675_14@ @H_675_14@以上是大佬教程为你收集整理的Perl:特殊数组@_不是真的别名吗?全部内容,希望文章能够帮你解决Perl:特殊数组@_不是真的别名吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。