时间:2021-05-02
数组
重复值的初始化
除了普通的初始化方法,我们可以通过 init(count: Int, repeatedValue: T) 来初始化一个数组并填充上重复的值:
复制代码 代码如下:带索引值的遍历
我们可以用 for in 遍历数组,如果想要 index 的话,可以用 enumerate<Seq : SequenceType>(base: Seq) :
复制代码 代码如下:赋值与拷贝
Swift 中数组和字典均是结构体的形式实现的,和 NSArray 那一套不太一样,所以赋值的时候其实是给了一份拷贝:
复制代码 代码如下:高阶函数
Swift 有一些 Higher Order Functions :map、filter和reduce。使用得当的话可以省去很多不必要的代码。
map
map 可以把一个数组按照一定的规则转换成另一个数组,定义如下:
复制代码 代码如下:也就是说它接受一个函数叫做 transform ,然后这个函数可以把 T 类型的转换成 U 类型的并返回 (也就是 (T) -> U),最终 map 返回的是 U 类型的集合。
下面的表达式更有助于理解:
复制代码 代码如下:如果用 for in 来实现,则需要这样:
复制代码 代码如下:举个例子,我们可以这样把价格数组中的数字前面都加上 ¥ 符号:
复制代码 代码如下:如果你觉得 money in 也有点多余的话可以用 $0 :
复制代码 代码如下:filter
方法如其名, filter 起到的就是筛选的功能,参数是一个用来判断是否筛除的筛选闭包,定义如下:
复制代码 代码如下:还是举个例子说明一下。首先先看下传统的 for in 实现的方法:
复制代码 代码如下:奇怪的是这里的代码编译不通过:
复制代码 代码如下:发现原来是 += 符号不能用于 append ,只能用于 combine ,在外面包个 [] 即可:
复制代码 代码如下:(靠。。居然忘了贴 filter 的用法,写到后面才发现。。)
用 filter 可以这样实现:
复制代码 代码如下:你真的好短啊!
reduce
reduce 函数解决了把数组中的值整合到某个独立对象的问题。定义如下:
复制代码 代码如下:好吧看起来略抽象。我们还是从 for in 开始。比如我们要把数组中的值都加起来放到 sum 里,那么传统做法是:
复制代码 代码如下:reduce 有两个参数,一个是初始化的值,另一个是一个闭包,闭包有两个输入的参数,一个是原始值,一个是新进来的值,返回的新值也就是下一轮循环中的旧值。写几个小例子试一下:
复制代码 代码如下:大概就是这些。
map 用来解包可选类型
我们在解包可选类型的时候,通常会这么做:
复制代码 代码如下:我们也可以用 map 来实现:
复制代码 代码如下:
func increment(someNumber: Int?) -> Int? {
return someNumber.map { number in number + 1 }
}
increment(5) // Some 6
increment(nil) // nil
包括其他可选类型也是可行的,比如 String :
复制代码 代码如下:再搭配上 ?? 符号,嗯基本够用了:
复制代码 代码如下:
func hello(someName: String?) -> String {
return someName.map { name in "Hello, \(name)" } ?? "Hello world!"
}
hello("NatashaTheRobot") // "Hello, NatashaTheRobot"
hello(nil) // "Hello world!"
扩展
数组和字典十分常用,而官方的方法功能有限。我们可以学习ExSwift 中 Array.swift 的内容,给 Array 添加一些 Extension。
以上所述就是本文的全部内容了,希望大家能够喜欢。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、引言Swift中提供了3种集合类型,Array数据类型,Set集合类型,Dictionary字典类型。Array用于存放一组有序的数据,数据角标从0开始一次
数组的介绍 数组(Array)是一串有序的由相同类型元素构成的集合,数组中的集合元素是有序的,可以重复出现。在Swift中数组类型是Array,是一个泛型集合
本文实例讲述了Python学习笔记之集合的概念和简单使用。分享给大家供大家参考,具体如下:集合概念解释:一个包含唯一元素的可变和无序的集合数据类型。集合的一个用
BULKCOLLECT(成批聚合类型)和数组集合type类型istableof表%rowtypeindexbybinary_integer用法笔记。例1:批量查
本文实例讲述了Python数据类型之Set集合。分享给大家供大家参考,具体如下:set集合1.概述set与dict类似,但set是一组key的集合,与dict的