加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:11:36 所属栏目:大数据 来源:网络整理
导读:所以这一直让我在过去的半个小时里去乞丐.我有没有办法把一个数组切片到一个匿名数组的末尾?我试过了: (split(”,$test_line))[1 .. $#_] 我试过: (split(”,$test_line))[1 ..- 1] 但更严重的是,这些都不工作.我真的不想有一个额外的临时变量实例化到中
所以这一直让我在过去的半个小时里去乞丐.我有没有办法把一个数组切片到一个匿名数组的末尾?我试过了:
(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 ' ' => ...)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读