有没有办法在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 ' ' => ...) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |