我有一个带有这个接口的迭代器:$ hit-> next_hsp
目前实现的目标是:
my @list;
while ( my $hsp = $hit->next_hsp ) {
push( @list, $hsp );
}
Run Code Online (Sandbox Code Playgroud)
现在我认为可能有更好的方法在更少的代码中执行此操作.你怎么说,堆垛机?
我见过的所有迭代器都undef表示它们已经筋疲力尽了.所以你应该写while (defined(my $hsp = $hit->next_hsp)).以下示例演示了问题中的错误,该错误测试真实(中止为1)而不是定义(通过'升空').
use 5.010;
my $hit = __PACKAGE__;
sub next_hsp {
state $i;
$i++;
return ['mumble', 4, 3, 2, 1, 0, 'liftoff']->[$i];
}
# insert snippet from question here
Run Code Online (Sandbox Code Playgroud)