Perl splice 函数

语法

splice ARRAY,OFFSET,LENGTH,LIST
splice ARRAY,OFFSET,LENGTH
splice ARRAY,OFFSET
splice ARRAY

功能

从ARRAY数组中OFFSET处向后删除LENGTH个元素,如果LIST参数存在,则用LIST在ARRAY中替换被删除掉的元素。在列表上下文中返回被删除元素的列表,在标量上下文中返回被删除的最后一个元素,如果没有删除任何元素则返回undef。

  1. 如果OFFSET主负,则从数组末尾开始向前计数-OFFSET为其起始位置。
  2. 如果省略LENGTH,则删除从OFFSET之后的所有元素。
  3. 如果LENGTH为负,则从数组末尾开始计数LENGTH个元素,然后从OFFSET位置到LENGTH位置之间的元素会被删除。
  4. 如果省略OFFSET和LENGTH,则删除所有内容。
  5. 如果OFFSET超出阵列的末尾,并且提供了一个LENGTH,则Perl发出警告,并在数组的末尾进行拼接。

例子

push(@a,$x,$y)      splice(@a,@a,0,$x,$y)
pop(@a)             splice(@a,-1)
shift(@a)           splice(@a,0,1)
unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
$a[$i] = $y         splice(@a,$i,1,$y)

sub nary_print {
    my $n = shift;
    while( my @next_n = splice @_, 0, $n) {
        say join q{ -- }, @next_n;
    }
}

nary_print(3, qw(a b c d e f g h));
# prints:
# a -- b -- c
# d -- e -- f
# g -- h
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Array_key_exists();检查给定的键名或索引是否存在于数组中二、array_keys ()返回数...
    peng_js阅读 2,750评论 0 0
  • Ruby 数组(Array) Ruby 数组是任何对象的有序整数索引集合。数组中的每个元素都与一个索引相关,并可通...
    黑夜的眸阅读 4,768评论 0 0
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 9,727评论 0 6
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 6,136评论 1 24
  • 2015-12-23 华杉 君子不跟人结党。君子没有盟友,没有“利益共同体”,没有“一致行动人”。因为君子的原则是...
    郁萍阅读 1,774评论 0 0