我想返回一个空数组,而不是一个空列表.
我有一个返回一系列事物的子.我希望能够用它做到这一点:
my $count = scalar getArray();
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
sub getArray {
if ( !isGood() ) {
return ();
} else {
my @array = calculateSomehow();
return @array;
}
}
my $count = scalar getArray();
Run Code Online (Sandbox Code Playgroud)
我有一个惊喜的时候!isGood(),并$count成为undef,不0!读完perlfaq4之后,我意识到这是因为getArray()是在标量上下文中计算的,因此列表 ()被评估为标量,而且scalar( () )是undef,而my @array; scalar( @array )0是.
现在的问题是:我如何最优雅地返回一个空数组,那么如果$count是这样的0话!isGood()?我只想出:
# This is kind of kludgy: Dereference an anonymous array ref. Really?
return @{[]};
Run Code Online (Sandbox Code Playgroud)
要么
# I use a temporary variable for this. Really?
my @empty;
return @empty;
Run Code Online (Sandbox Code Playgroud)
是不是有更清晰/更优雅的方式返回长度为0 的数组(空数组)或其他一些scalar getArray()评估方式0?
如果你在两种情况下只返回一个数组,它可能是最清楚的:
sub getArray {
my @array;
@array = calculateSomehow() if isGood();
return @array;
}
Run Code Online (Sandbox Code Playgroud)
但要以最小的方式修改原始代码,请使用wantarray.
if (!isGood()) {
return wantarray ? () : 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2094 次 |
| 最近记录: |