// 数组
public struct Array : RandomAccessCollection, MutableCollection { }
// 字典
public struct Dictionary : Collection, ExpressibleByDictionaryLiteral { }
// 集
public struct Set : SetAlgebra, Hashable, Collection, ExpressibleByArrayLiteral { }
1. Array
1.1 数组的创建
数组创建的 api
// 默认的初始化方法
public init()
// 传入一个 序列 元素创建
public init(_ s: S)
// 字面值创建
public init(arrayLiteral elements: Element...)
// 创建一个固定大小 重复值的数组
public init(repeating repeatedValue: Element, count: Int)
常见的空数组创建的方式
var arr1 = [Double]() // 推荐使用
var arr2 = Array()
var arr3: [Double] = [] // 推荐使用
var arr4: [Double] = Array()
var arr5: Array = []
var arr6: Array = Array()
推荐使用 arr1 和 arr3 的数组的创建方式。理由,简洁高效。
1.2 推荐的数组创建方式
let numbers = [1, 3, 5, 7, 9, 11, 13, 15]
let streets = ["Albemarle", "Brandywine", "Chesapeake"]
注:使用 let 声明的数组不能再被修改。
**使用的是上面第三个 Array 的 init 函数。 **
这种创建数组的方式更加的高效和简洁。
1.3 Array 初始化演示
Array 结构体的申明
public struct Array : RandomAccessCollection, MutableCollection { }
api
public init()
在初始化的时候必须指定 数组中存储的 数据类型
// Array
var arr = Array()
api
public init(_ s: S)
// S 类型,遵守 Sequence 协议。
// 所有遵守 Sequence 协议的实例,并且 S 类型迭代出来的元素的类型 和 Array 中保存的元素的类型一致。
// 都可以往里面传。
let namedHues: [String: Int] = ["Vermillion": 18,
"Magenta": 302,
"Gold": 50,
"Cerise": 320]
let colorNames = Array(namedHues.keys)
let colorValues = Array(namedHues.values)
let numbers = Array(0...10)
// 等效
let numbers1 = [0,1,2,3,4,5,6,7,8,9,10]
api
// 这个函数不能直接调用,这个方法是由编译器调用,通过使用字面量来触发,
public init(arrayLiteral elements: Element...)
let ingredients = ["cocoa beans", "sugar", "cocoa butter", "salt"]
api
// 创建一个,元素值重复,个数固定的数组
public init(repeating repeatedValue: Element, count: Int)
let fiveZs = Array(repeating: "Z", count: 5)
1.4 数组的常用操作
- **数组的遍历 **
**for - in **
let numbers = Array(0...10)
// 这个是遍历所有的元素
for number in numbers {
print(number)
}
// 这种方式和上面是等价的 (区别: ..< 通过区间的调整,可以遍历数组中的部分元素)
for index in 1..
forEach
let numbers = Array(0...10)
numbers.forEach { (number) in
print(number)
}