我在Perl中有一个问题,我不明白.我把它剥离到这个非常短的代码.
为什么Perl的map函数返回一个空数组?不应该返回9 undef秒的阵列吗?
sub mySub{
return;
}
my @arr = (1 .. 9);
my @arr2 = map( mySub($_), @arr );
print @arr . ' ' . @arr2, "\n";
Run Code Online (Sandbox Code Playgroud)
它打印"9 0".
它可能很简单,但perldoc没有帮助.
对你的问题更一般的答案是这样的:当return没有参数使用when时,它返回的值取决于调用上下文:
list context returns an empty list
scalar context returns an undefined value
Run Code Online (Sandbox Code Playgroud)
例如:
use strict;
use warnings;
use Data::Dumper;
my (@list);
sub mySub { return }
@list = map( mySub($_), 1..2); print Dumper(\@list);
@list = map(scalar mySub($_), 1..2); print Dumper(\@list);
Run Code Online (Sandbox Code Playgroud)
输出:
$VAR1 = [];
$VAR1 = [
undef,
undef
];
Run Code Online (Sandbox Code Playgroud)