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 数组高阶使用(一)相关推荐

  1. Swift的高阶函数

    Swift的高阶函数 swift常用高阶函数 1. map 2. flatMap 3. filter 4. reduce swift常用高阶函数 swift中比较常用的高阶函数有:map.flatMa ...

  2. Swift 常用高阶函数

    Swift 常用高阶函数 map函数 对每一个元素进行运算 计算每一个元素的count 对元素进行大小写变换 转换类型 sorted函数 从小到大排序 从大到小排序 flatMap函数 降维 过滤元素 ...

  3. Swift 基础 高阶函数 forEach filter map compactMap compactMapValues flatMap reduce sort sorted shuffled ...

    一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...

  4. 使用函数处理数组 高阶函数 js

    函数式编程 和lisp这种纯粹的函数式编程不一样,js可以实现其为函数式编程 使用函数处理数组 计算一个数组的平均值 // 定义一个用于计算和的函数 var sum = function(x, y){ ...

  5. js reduce实现中间件_js数组高阶方法reduce经典用法代码分享

    以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...

  6. Swift 烧脑体操(三) - 高阶函数

    前言 \\ Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说 ...

  7. 高阶 numpy 数组快速插值(高阶快插)算法探讨

    在科学计算和数据处理领域,数据插值是我们经常面对的问题.尽管 numpy 自身提供了 numpy.interp 插值函数,但只能做一维线性插值,因此,在实际工作中,我们更多地使用 scipy 的 in ...

  8. 什么是高阶函数?数组中的高阶函数有哪些?

    何为高阶函数?一个函数就可以接收另一个函数作为参数或者返回值为一个函数,这种函数就称之为高阶函数. 1. Map 遍历 1. 对原来的数组没有影响: 2. 创建一个新数组,其结果是该数组中的每个元素都 ...

  9. 数组中常用的高阶方法

    一.操作方法 1.concat 如果传递的参数是一个数组或者多个数组,那么会将多个数组的每一个项都添加到原来的数组后面,然后返回这个数组,原数组不变. 例如: 2.slice slice方法接受两个参 ...

最新文章

  1. threejs 纹理流动_Threejs多重纹理与过程纹理实现
  2. 互联网协议入门(二)
  3. 【JX4G】JX4G摄影测量工作站快捷键大全
  4. 李航《统计学习方法》之HMM隐马尔可夫模型
  5. mysql服务器停止工作原理_MySQL服务器突然停止工作! - CentOS
  6. ToB销售的成交,需要客户对供应商有三个信任
  7. How to install and configure vsftpd
  8. 如何获取maven命令执行后成功与否的返回值
  9. 推荐一款好用的取色器(仅支持windows)
  10. 计算机毕设分词,基于词表的中文分词算法
  11. Java数组之冒泡排序
  12. php 翻译接口,php有道翻译api调用方法
  13. Win10 微软拼音添加小鹤双拼以及其他配置
  14. java实现爬虫,爬取网易歌单信息
  15. 解决FFMPEG错误:height not divisible by 2 / width not divisible by 2
  16. 数据填报不用愁,帆软报表来解忧!
  17. 早稻田大学国际文学馆(村上春树图书馆)正式开馆
  18. Tableau交叉表图表
  19. promise获取所有文件路径_python使用os.listdir和os.walk获得文件的路径
  20. paddle静态图训练,训练集和测试集效果都有很好,但验证集上效果很差

热门文章

  1. Chrome开发者工具详解(2)-Network面板
  2. mysql 主主同步配置_MySQL 主主同步配置
  3. 电子计算机说明文作文,电脑事物说明文
  4. 第十六届全国大学生智能车竞赛广东赛区线上竞赛方案
  5. 吹灭蛋糕上蜡烛的节能小车
  6. 中心频率为150kHz的选频放大检波电路补充测试
  7. 信标灯、三轮车、电容充电
  8. 感觉没有学会什么真正的本领
  9. 七猫php面试,七猫面试 - osc_2frv0wjp的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. 科技边框_智能手机窄边框喷射点胶机欧力克斯