splice 操作符
几乎所有的数组操作都可用 splice 实现。 除了第一个参数,数组,为必须,其余的参数都不是必须的。
- splice ARRAY, OFFSET, LENGTH, LIST
OFFSET 和 LENGTH 定义了 ARRAY 中将要删除的部分, LIST 表示在删除的位置上要添加的元素。 如果LIST 省略,表示只删除,不增加。
怎样从数组中删除元素
- my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful);
- splice @dwarfs, , ;
- # 从Sleepy 删除2个元素,移除Sleepy Sneezy
- print "@dwarfs"; # Doc Grumpy Happy Dopey Bashful
怎样在数组中添加一个元素?
- my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful);
- splice @dwarfs, , , 'SnowWhite';
- # 0 表示不移除,添加后边的列表
- print "@dwarfs";
- # Doc Grumpy Happy SnowWhite Sleepy Sneezy Dopey Bashful
怎样在数组中增添多个元素?
其实,增添一个元素是增添多个元素的特殊情况。
- my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful);
- splice @dwarfs, , , '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, , , @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, , , @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, , , @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, , , @others;
- print "$who\n";
- # Sneezy
参数为负值?
偏移值(OFFSET)和长度(LENGTH)值都可以为负数,表示从数组的末尾算起。
- my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful);
- #偏移为3,即从第四个算起,-1 表示直到整个数组的倒数第一个。
- my @who = splice @dwarfs, , -;
- print "@who";
- # Sleepy Sneezy Dopey
- my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful);
- #从倒数第三个开始,向右移除的第一个元素。
- my @who = splice @dwarfs, -, ;
- print "@who";
- # Sneezy
splice 操作符的更多相关文章
- perl学习之路3
Perl编程之路3 标签: perl 列表与数组 Perl里面代表复数的就是列表和数组 列表(list)指的是标量的有序集合, 而数组(array)则是存储列表的变量. 在Perl这两个属于尝尝混 ...
- perl语言入门总结-第3章-列表与数组
1-列表list指的是标题的有序集合, 而数组(array)则是存储列表的变量. 更精确地说,列表指的是数据,而数组指的是变量. 访问数组中的元素 ] = "yabba"; ] = ...
- perl第三章 列表和数组
访问数组中的元素 $fred[0] $fred[1] $number=2.75; print $fred[$number-1] 结果就是print $fred[1] 特殊的数组索引1.对索 ...
- Perl语言入门(中文版)(第6版) 东南大学出版社
第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? ...
- JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...
- [转] JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...
- JavaScript基本知识----操作符,流程控制,循环,字符串方法,数组方式,补充方法
操作符 算术运算 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- JS 操作符、控制流程、循环、字符串/数组方法
操作符 算术运算符:+ .- . * . / . %.++.-- 赋值运算符:= .+=.-=. *=./=.%= 比较运算符:>.>=.<.<=.!=.==.===(全等,数 ...
- Oracle 的基本操作符
!= 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...
随机推荐
- Learn Objectvie-C on the Mac 2nd Edition 笔记
Chapter 1Apple’s Cocoa (for OS X) 和 Cocoa Touch (for iOS) toolkits 都是用 Objective-C写的. Chapter 2 (1) ...
- HDOJ 1032(POJ 1207) The 3n + 1 problem
Description Problems in Computer Science are often classified as belonging to a certain class of pro ...
- QT静态链接
想把QT的程序链接成一个独立的EXE以方便使用,查了很多资料都需要自行编译QT. 搜索了很多的资料,发篇写得比较简明一些:http://my.oschina.net/weiweiqiao/blog/2 ...
- Nova 无法向虚机注入密钥
欢迎各位关注我的博客:http://weibo.com/u/216633637 废话开头: 之前参考这位同学的博客http://www.cnblogs.com/awy-blog/p/3447176.h ...
- struts2 最新S2-016-S2-017漏洞通杀struts2所有版本及修复方法
详情查看http://zone.wooyun.org/content/5159 官方漏洞说明 http://struts.apache.org/release/2.3.x/docs/s2-016.ht ...
- [NOIP2015pj题解]From某因为时间快了那么一点点超过下一位的蒟蒻(其实是纯代码).
第一题,很水,直接上代码 #include <iostream> #include <fstream> #include <cstdlib> /* run this ...
- 如何解决 SogouIinput not enough space for thread data ?? 虚拟内存
问题:总是提示没有足够的空间读写数据 上图: 原因: 可能是虚拟内存设置了过大了[我不知道明白是不是也是这样,我出现这个问题就是因为我把虚拟内存设置成了4G,我的物理内存是2G的] 具体问题具体分析, ...
- Open XML Format SDK引用
Excel的便捷使得其在非开发人员的办公中非常流行,而Excel确实也提供了很多有用的功能.很多时候我们还需要以Excel为数据源来进行处理或者将Excel作为模板来生成一些报表.在Open XML ...
- 另5个你不知道的HTML5接口API
原文地址: 5 More HTML5 APIs You Didn’t Know Existed 演示地址: 全屏API Demo 原文日期: 2012年11月08日 翻译日期: 2013年08月13日 ...
- Qt 学习之路:Graphics View Framework
Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转.我们通常所说的 Linux 的 KD ...