如何切片数组ref并在一行中返回数组ref?

问题描述 投票:1回答:2

请考虑以下代码行。我想切片数组ref $ a并将结果作为分配给$ b的数组ref返回。如图所示,我可以用两行来完成。我在一条线上试图做到这一点感到难过!如何才能做到这一点?

$a = [1,2,3,4,5];
###the desired result###########################
@b = @{$a}[1 .. @{$a} - 1];
$b = \@b; # $b is [2,3,4,5]
################################################
###trying to get the desired result in one line##
$b = \@{$a}[1 .. @{$a} - 1]; # $b is \5;
$b = \{@{$a}[1 .. @{$a} - 1]}; # $b is \{ 2 => 3, 4 => 5 }
$b = $a->[1 .. @{$a} - 1]; # $b is 1
$b = $a->@[1 .. @{$a} - 1]; # $b is 5
perl
2个回答
4
投票

你可以说

$b = [ @{$a}[1 .. @{$a} - 1] ];

2
投票

灵感来自this question,也有

$b = [ splice @{[@$a]},1 ]
© www.soinside.com 2019 - 2024. All rights reserved.