文档章节

swift 数组高阶使用(二)

樱黯雨
 樱黯雨
发布于 2016/07/02 11:47
字数 484
阅读 12
收藏 0

swift 数组高阶使用(二)

这次主要讲解swift中mapflatmapfilterreduce对数组的操作,你会发现,你的数组变得非常简单,上代码:

  • map

被一个数组调用,并且可以接受一个闭包,返回原数组各元素经过闭包处理以后所得到的元素组成的数组

// 原来的数组
let textArr = ["魔兽", "惊天魔盗团2", "X战警:天启"]
// 一个闭包
func addHD(movieName:String) ->String {
    let newName = movieName + "_HD"
    return newName
}
// 新数组
let newArr = textArr.map(addHD)
print(newArr)//["魔兽_HD", "惊天魔盗团2_HD", "X战警:天启_HD"]
// 或者可以直接写为:
let newArr2 = textArr.map {(movieName:String)->String? in
    let newName = movieName + "_HD"
    return newName
}
// 当然,还有最简单的方法
let newArr3 = textArr.map{("\($0)_HD")}
  • flatmap

flatmap和map的功能一样,但是flatmap会自动剔除返回元素中为nil的元素,并且返回的不再是可选值,而是强制解析以后的非可选值。所以在flatmap和map的使用中我们需要做一个选择。

  • filter

顾名思义,filter就是过滤的意思,可以将数组中的所有元素遍历进行过滤

let num = [1, 2, 3, 4, 5, 6, 7, 8]
let result = num.filter{$0 < 5}
print(result) // [1, 2, 3, 4]
  • reduce

ReducemapflatMapfilter 的一种扩展的形式(译者注:后三个函数能干嘛,reduce 就能用另外一种方式实现)Reduce 的基础思想是将一个序列转换为一个不同类型的数据,期间通过一个累加器(Accumulator)来持续记录递增状态。

// 一个非常经典的代码,一行实现0-100的和
(0...100).reduce(0, combine: +)  // 5050

上边的代码首先是一个(0...100)的数组进行了reduce操作. (0, combine: +)中,0 表示一个初始值,”combine: +“表示对数组中的元素做+运算,得到的结果赋值给0位置的这个参数

© 著作权归作者所有

樱黯雨
粉丝 3
博文 36
码字总数 22677
作品 0
郑州
程序员
私信 提问
swift,Array的高阶函数使用一: map

对于喜欢直接看代码的小伙伴们来说,可以直接跳过 一、二、三,直接看第四步,就找到你喜欢的code了。 一、学习背景 使用swift语言也有一年了,说来惭愧,遇到问题百度的时候多,大部分都是问...

like_sunflower
01/04
0
0
Swift中的高阶函数:sorted, map, reduce, forEach, flatMap, filter

高阶函数(Higher-order function) 在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数: 接受一个或多个函数作为输入 输出一个函数 函数式编程中,高阶函数比较常见了。 注:, ,...

Andy_Ron
2018/10/15
0
0
07-Swift中的数组

数组 1 数组的介绍 2 数组的初始化 数组的初始化 在声明一个Array类型的时候可以使用下列的语句之一 声明的数组需要进行初始化才能使用,数组类型往往是在声明的同时进行初始化的 3 对数组的...

不孤独的美食家
2016/08/06
5
0
《Swift 5 实用教程》电子书

在移动开发领域,iOS 系统以优越的体验获得了很多果粉的青睐,加上 Apple 提供的完善的生态链,很多移动开发者从中获益。2014年,Apple 发布全新 Swift 语言,意图替换已经陈旧的 Objective-...

YungFan
08/17
0
0
【译】Swift算法俱乐部-二叉搜索树

本文是对 Swift Algorithm Club 翻译的一篇文章。 Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下...

Andy_Ron
2018/12/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Groovy单元测试框架spock数据驱动Demo

spock是一款全能型的单元测试框架。 上次文章分享了spock框架的基础功能的使用,在此基础上,我根据自己写的Groovy的封装方法、数据驱动以及一些Groovy的高级语法做了一些尝试。发现还是有一...

八音弦
30分钟前
3
0
linux 安装nvm,通过nvm安装node

1,nvm git地址点击打开链接,安装命令 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash or Wget: wget -qO- https://raw.githubusercontent.com/cr......

JamesView
38分钟前
4
0
Spring Boot快速入门

简介 官方文档 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。使用Spring boot以后,搭建一个spring应用和开发变得很简单。 Springboot...

快乐搬砖
51分钟前
7
0
关于看书看剧看电影

多看一些书,思想改变行为 改变一些观念。 一些好的电视剧和电影也要看一看,除了娱乐以外 还有的可以让人不那么单纯,人是很复杂的。 以后可以把自己看的一些剧 书的观后看啥的可以写写博客...

T型人才追梦者
52分钟前
4
0
数据流中的中位数

参考:https://sunweiguo.github.io/2019/03/18/%E5%89%91%E6%8C%87offer/%E3%80%90%E9%9D%A2%E8%AF%95%E9%A2%9863-%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95......

Garphy
53分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部