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 ...
随机推荐
- Ehcache专栏
http://www.iteye.com/blogs/subjects/ehcache
- Windows版本搭建安装React Native环境配置及相关问题
此文档整理参考地址: http://www.lcode.org/%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86windows%E7%89%88%E6%9C% ...
- js学习笔记之包装对象
JavaScript包装对象 近日有时间,闲下来好好学习原生js JavaScript是一门面向对象语言,使用"."就可以访问对象的属性和方法,而基本类型(null, undefi ...
- Word2007怎样从随意页開始设置页码 word07页码设置毕业论文
Word2007怎样从随意页開始设置页码 word07页码设置毕业论文 页開始设置页码. 一.插入页码 插入→页眉和页脚→页码→页面底端→普通数字3 说明:被→分隔的内容分别为选项卡,模块,命令but ...
- JSP-标准动作标记
JSP标准动作标记 在客户请求JSP页面时,JSP动作利用XML语法格式的标记来控制Servlet引擎的行为.利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面.为J ...
- java中for循环的6种写法
有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考. package ForLoop; import java.util.ArrayList; import java.util.Itera ...
- Python获取Origin官网视频
程序说明:最近学习origin,看到官网有入门视频(http://www.originlab.com/index.aspx?go=SUPPORT/VideoTutorials),看着挺多的,就用pyt ...
- 使用PowerShell读、写、删除注册表键值
访问注册表键值 在PowerShell中,用户可以通过类似于HKCU:(作为HKEY_CURRENT_USER)和HKLM:(代表HKEY_LOCAL_MATCHINE)的虚拟驱动器访问注册表键值. ...
- 11.1 afternoon
幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...
- HttpClient使用cookie
import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; ...