我有一個陣列,我想在其中插入一個新元素,將所有其他元素向右移動:
my @a = (2, 5, 4, 8, 1);
# insert 42 into position no. 2
預期結果:
(2, 5, 42, 4, 8, 1);
uj5u.com熱心網友回復:
my @a = (2, 5, 4, 8, 1);
splice(@a, 2, 0, 42); # -> (2, 5, 42, 4, 8, 1)
這意味著:在陣列@a 位置 2 中洗掉 0 個元素并添加元素 42(可以添加更多元素)。有關更多資訊,請參閱splice,特別是這種用法:
splice ARRAY or EXPR,OFFSET,LENGTH,LIST
uj5u.com熱心網友回復:
通過在所需位置切片陣列可以輕松完成。
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
my @arr = (2, 5, 4, 8, 1);
my $pos = 2;
my $val = 42;
say Dumper(\@arr);
@arr = (@arr[0..$pos-1],$val,@arr[$pos..$#arr]);
say Dumper(\@arr);
輸出
$VAR1 = [
2,
5,
4,
8,
1
];
$VAR1 = [
2,
5,
42,
4,
8,
1
];
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530934.html
標籤:perl
下一篇:模板工具包洗掉,從最后一個條目