perl – 为什么map()掩码’undefined value’错误?
发布时间:2020-12-15 21:13:32 所属栏目:大数据 来源:网络整理
导读:我想知道为什么在第二个片段中调用映射使得’未定义的值’错误消失了? use strict;use warnings;my $x;my @a = @{ $x }; # error: Can't use an undefined value as an ARRAY reference 相比于: use strict;use warnings;my $x;my @a = map $_,@{ $x }; #
我想知道为什么在第二个片段中调用映射使得’未定义的值’错误消失了?
use strict; use warnings; my $x; my @a = @{ $x }; # error: Can't use an undefined value as an ARRAY reference 相比于: use strict; use warnings; my $x; my @a = map $_,@{ $x }; # no error,@a is empty 解决方法
这是因为
map()做了别名的方式(它本质上是使用for()循环).正在发生的事情是,在l值上下文中使用了isf,因此正在使用
auto-vivified.
在你的前一个例子中,你正在尝试直接在r值上下文中使用aref,这就是为什么它会生成错误(因为没有自动生成). 您可以简化对()的使用测试,您将得到与map()相同的结果: use warnings; use strict; my $x; for (@{ $x }){ print "$_n"; } …没有输出. 为了在视觉上看到$x被自动生成为数组引用,可以使用ref()函数: my $x; my @a = map $_,@{ $x }; print ref $x; 输出: ARRAY (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读