【发布时间】:2016-06-25 14:35:29
【问题描述】:
我使用以下代码在@{$index} 的索引处排除@{$x} 中的元素。但我不确定这是实现此功能的最有效方式。有没有人有更好的办法。
sub arrayexclude {
my $x = shift;
my $index = shift;
my @keep_index = (0 .. (scalar(@{$x})-1));
delete @keep_index[@{$index}];
my $result=[];
for my $i (@keep_index) {
if(defined $i) {
push @{$result}, @{$x}[$i];
}
}
return $result;
}
【问题讨论】:
-
作为一个补充说明,
0 .. (scalar(@{$x})-1)更容易写成0 .. $#$x,或者如果你更喜欢0 .. $#{$x}。 -
$#foo经常被误用,如果你给它加 1,你就做错了......但如果你在数组的索引范围内,或者在谈论最后一个索引,正是你想要的。