swift 数组高阶使用(一)
2019独角兽企业重金招聘Python工程师标准>>>
###swift 数组高阶使用 在使用数组的时候,我们通常会通过下标的方式来获得数组中的元素,但是有时候我们会需求会非常变态,比如我们只需要获取数组中下标为0,2,4的元素,或者对他们进行修改。swift的extension就给我们提供了很好的帮助。直接上代码:
// 对Array 进行扩展
extension Array {// 这里我们扩展一个新的方法,并且实现它的get和set方法subscript(input:[Int]) ->ArraySlice<Element> {get {var result = ArraySlice<Element>()for i in input {assert(i < self.count, "越界")// 越界时的断言result.append(self[i])}return result}set {for (index, i) in input.enumerate() {assert(i < self.count, "越界")// 越界时的断言self[i] = newValue[index]}}}
}
// 测试代码如下
var array = [1, 2, 3, 4, 5]
array[[0, 2, 4]] // [1, 4, 5]
array[[0, 1, 2]] = [9, 9, 9]
array // [9, 9, 9, 4, 5]
这样就可以满足我们对数组的各种奇葩需求,希望可以帮助大家。
PS: 断言在我的博客中也有讲解,具体链接:断言的使用
转载于:https://my.oschina.net/ozawa4865/blog/704486
swift 数组高阶使用(一)相关推荐
- Swift的高阶函数
Swift的高阶函数 swift常用高阶函数 1. map 2. flatMap 3. filter 4. reduce swift常用高阶函数 swift中比较常用的高阶函数有:map.flatMa ...
- Swift 常用高阶函数
Swift 常用高阶函数 map函数 对每一个元素进行运算 计算每一个元素的count 对元素进行大小写变换 转换类型 sorted函数 从小到大排序 从大到小排序 flatMap函数 降维 过滤元素 ...
- Swift 基础 高阶函数 forEach filter map compactMap compactMapValues flatMap reduce sort sorted shuffled ...
一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...
- 使用函数处理数组 高阶函数 js
函数式编程 和lisp这种纯粹的函数式编程不一样,js可以实现其为函数式编程 使用函数处理数组 计算一个数组的平均值 // 定义一个用于计算和的函数 var sum = function(x, y){ ...
- js reduce实现中间件_js数组高阶方法reduce经典用法代码分享
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
- Swift 烧脑体操(三) - 高阶函数
前言 \\ Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说 ...
- 高阶 numpy 数组快速插值(高阶快插)算法探讨
在科学计算和数据处理领域,数据插值是我们经常面对的问题.尽管 numpy 自身提供了 numpy.interp 插值函数,但只能做一维线性插值,因此,在实际工作中,我们更多地使用 scipy 的 in ...
- 什么是高阶函数?数组中的高阶函数有哪些?
何为高阶函数?一个函数就可以接收另一个函数作为参数或者返回值为一个函数,这种函数就称之为高阶函数. 1. Map 遍历 1. 对原来的数组没有影响: 2. 创建一个新数组,其结果是该数组中的每个元素都 ...
- 数组中常用的高阶方法
一.操作方法 1.concat 如果传递的参数是一个数组或者多个数组,那么会将多个数组的每一个项都添加到原来的数组后面,然后返回这个数组,原数组不变. 例如: 2.slice slice方法接受两个参 ...
最新文章
- threejs 纹理流动_Threejs多重纹理与过程纹理实现
- 互联网协议入门(二)
- 【JX4G】JX4G摄影测量工作站快捷键大全
- 李航《统计学习方法》之HMM隐马尔可夫模型
- mysql服务器停止工作原理_MySQL服务器突然停止工作! - CentOS
- ToB销售的成交,需要客户对供应商有三个信任
- How to install and configure vsftpd
- 如何获取maven命令执行后成功与否的返回值
- 推荐一款好用的取色器(仅支持windows)
- 计算机毕设分词,基于词表的中文分词算法
- Java数组之冒泡排序
- php 翻译接口,php有道翻译api调用方法
- Win10 微软拼音添加小鹤双拼以及其他配置
- java实现爬虫,爬取网易歌单信息
- 解决FFMPEG错误:height not divisible by 2 / width not divisible by 2
- 数据填报不用愁,帆软报表来解忧!
- 早稻田大学国际文学馆(村上春树图书馆)正式开馆
- Tableau交叉表图表
- promise获取所有文件路径_python使用os.listdir和os.walk获得文件的路径
- paddle静态图训练,训练集和测试集效果都有很好,但验证集上效果很差
热门文章
- Chrome开发者工具详解(2)-Network面板
- mysql 主主同步配置_MySQL 主主同步配置
- 电子计算机说明文作文,电脑事物说明文
- 第十六届全国大学生智能车竞赛广东赛区线上竞赛方案
- 吹灭蛋糕上蜡烛的节能小车
- 中心频率为150kHz的选频放大检波电路补充测试
- 信标灯、三轮车、电容充电
- 感觉没有学会什么真正的本领
- 七猫php面试,七猫面试 - osc_2frv0wjp的个人空间 - OSCHINA - 中文开源技术交流社区...
- 科技边框_智能手机窄边框喷射点胶机欧力克斯