gpt4 book ai didi

perl - 有什么办法可以将切片抓取到Perl中的匿名数组的末尾吗?

转载 作者:行者123 更新时间:2023-12-03 23:18:07 24 4
gpt4 key购买 nike

因此,这使我在过去的半小时内变得疯狂。我有什么办法可以将数组切片抓到匿名数组的末尾?我试过了:
(split(' ',$test_line))[1..$#_]
我尝试过:
(split(' ',$test_line))[1..-1]
但令人沮丧的是,这些都不起作用。我真的不想在中间数组上实例化一个额外的临时变量(我不需要)。而且我真的不想使用一个丑陋且难以理解的衬垫(在网上找到了一些)。真的没有直接的方法吗?

最佳答案

列表,即您的示例中的内容,不能从末尾切片。这主要是因为列表不是Perl中合适的数据结构,而是解释器用来移动数据的结构。因此,从一开始就知道只能对列表进行切片,因此您的选择是将其放入数组变量中,然后进行切片,更改算法以返回所需内容,或者执行以下操作:

如果将此值分配给某些内容,则可以在每个不需要的插槽中使用undef

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


如果您发布更多代码,我可以进行修改。

另外,您可以使用功能编程中的某些工具。函数 droptake对可用于调整列表大小而无需附加变量:

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


然后你的例子变成

drop 1, split ' ' => $test_line;


drop 1通常也称为 tail

sub tail {drop 1, @_}


当然,由于所有这些都太短了,因此如果要内联它:

sub {shift; @_}->(split ' ' => ...)

关于perl - 有什么办法可以将切片抓取到Perl中的匿名数组的末尾吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com