数组 – Perl数组与列表
发布时间:2020-12-15 21:24:57 所属栏目:大数据 来源:网络整理
导读:我在Perl中有两个数据结构: 数组: my @array2 = ( "1","2","3");for $elem (@array2) { print $elem."n";} 给我以下输出: 123 和一个列表: my @array = [ "1","3"]; for $elem (@array) { print $elem."n";} 给出以下输出: ARRAY(0x9c90818) 显然,我
我在Perl中有两个数据结构:
数组: my @array2 = ( "1","2","3"); for $elem (@array2) { print $elem."n"; } 给我以下输出: 1 2 3 和一个列表: my @array = [ "1","3"]; for $elem (@array) { print $elem."n"; } 给出以下输出: ARRAY(0x9c90818) 显然,我想在这两种情况下迭代元素,但为什么第二个解决方案只给我这个数组的引用? 解决方法
Perl中的列表不是数据结构,它们是源代码中的位置,由围绕它们的上下文确定。列表基本上是Perl用来移动数据的瞬态结构。您使用Perl的所有语法与它们进行交互,但不能将它们用作数据类型。最接近列表的数据类型是数组。
my @var = (1,2,3); # parens needed for precedence,they do not create a list ^ an array ^ a list say 1,3; ^ a list say @var; ^ a list (of one array,which will expand into 3 values before `say` is called) 当你写[1,2,3]你正在做的是创建一个标量数组引用。该数组引用使用列表1,3初始化,它与创建命名的数组并引用它相同: [1,3] ~~ do {my @x = (1,3); @x} 由于[…]结构创建一个标量,你应该保持它在一个标量: my $array = [1,3]; for my $elem (@$array) { # lexical loop variable print $elem."n"; } 因为你想对整个数组进行操作,而不仅仅是引用,你在$数组前放置一个@,它取消引用存储的数组引用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |