有没有办法在Perl的一个匿名数组的最后获取一个切片?

前端之家收集整理的这篇文章主要介绍了有没有办法在Perl的一个匿名数组的最后获取一个切片?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以这一直让我在过去的半个小时里去乞丐.我有没有办法把一个数组切片到一个匿名数组的末尾?我试过了:
(split(”,$test_line))[1 .. $#_]
我试过:
(split(”,$test_line))[1 ..- 1]
但更严重的是,这些都不工作.我真的不想有一个额外的临时变量实例化到中间数组(我不需要).而我真的不想使用一个丑陋和不可读的一个班轮(发现在线的几个).真的没有直接的方法吗?

解决方法

一个列表,这是你在你的例子中,不能从最后切片.这主要是因为列表在Perl中不是正确的数据结构,而是一个解释器用来移动数据的结构.所以知道你只能从开始的一个列表切片,你的选择是把它放在一个数组变量然后切片,改变你的算法返回你想要的,或以下:

如果你把这个值分配给某个东西,你可以在你不想要的每个插槽中使用undef:

my (undef,@list) = split ' ' => $test_line;

如果你发布更多的代码,我可以修改.

或者,您可以使用功能编程中的一些工具.一对函数drop和take可用于调整列表大小而无需其他变量:

sub take {
    my $n = shift;
    @_[0..$n-1]
}
sub drop {
    my $n = shift;
    @_[$n..$#_]
}

然后你的例子变成了

drop 1,split ' ' => $test_line;

滴1也通常称为尾巴

sub tail {drop 1,@_}

当然,由于所有这些都很短,如果你想内联它:

sub {shift; @_}->(split ' ' => ...)
原文链接:https://www.f2er.com/Perl/172549.html

猜你在找的Perl相关文章