splice 操作符
几乎所有的数组操作都可用 splice 实现。 除了第一个参数,数组,为必须,其余的参数都不是必须的。
splice ARRAY, OFFSET, LENGTH, LIST
OFFSET 和 LENGTH 定义了 ARRAY 中将要删除的部分, LIST 表示在删除的位置上要添加的元素。 如果LIST 省略,表示只删除,不增加。
-
怎样从数组中删除元素
my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); splice @dwarfs, 3, 2; # 从Sleepy 删除2个元素,移除Sleepy Sneezy print "@dwarfs"; # Doc Grumpy Happy Dopey Bashful
-
怎样在数组中添加一个元素?
my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); splice @dwarfs, 3, 0, 'SnowWhite'; # 0 表示不移除,添加后边的列表 print "@dwarfs"; # Doc Grumpy Happy SnowWhite Sleepy Sneezy Dopey Bashful
-
怎样在数组中增添多个元素?
其实,增添一个元素是增添多个元素的特殊情况。
my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); splice @dwarfs, 3, 0, 'SnowWhite', 'Humbert'; print "@dwarfs"; # Doc Grumpy Happy SnowWhite Humbert Sleepy Sneezy Dopey Bashful
-
怎样把一个数组中的元素添加到另一个数组中?
只要把splice的第四个参数换成你想要添加的数组就好了。
my @others = qw(SnowWhite Humbert); my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); splice @dwarfs, 3, 0, @others; print "@dwarfs"; # Doc Grumpy Happy SnowWhite Humbert Sleepy Sneezy Dopey Bashful
-
替换掉数组中的某些元素?
添加和删除一起完成。
my @others = qw(SnowWhite Humbert); my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); splice @dwarfs, 2, 4, @others; print "@dwarfs\n"; # Doc Grumpy SnowWhite Humbert Bashful
-
返回值
在 LIST 情境 splice 返回移除的值.
my @others = qw(SnowWhite Humbert); my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); my @who = splice @dwarfs, 3, 2, @others; print "@who\n"; # Sleepy Sneezy
在 SCALAR 情境,返回最后一个移除的值,如果没有值被移除,则返回 undef。
my @others = qw(SnowWhite Humbert); my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); my $who = splice @dwarfs, 3, 2, @others; print "$who\n"; # Sneezy
-
参数为负值?
偏移值(OFFSET)和长度(LENGTH)值都可以为负数,表示从数组的末尾算起。
my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); #偏移为3,即从第四个算起,-1 表示直到整个数组的倒数第一个。 my @who = splice @dwarfs, 3, -1; print "@who"; # Sleepy Sneezy Dopey
my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); #从倒数第三个开始,向右移除的第一个元素。 my @who = splice @dwarfs, -3, 1; print "@who"; # Sneezy