Swift Standard Library —— Array,

2016-09-01  本文已影响213人  Laughingg
// 数组
public struct Array<Element> : RandomAccessCollection, MutableCollection { }

// 字典
public struct Dictionary<Key : Hashable, Value> : Collection, ExpressibleByDictionaryLiteral { }

// 集
public struct Set<Element : Hashable> : SetAlgebra, Hashable, Collection, ExpressibleByArrayLiteral { }

1. Array

1.1 数组的创建

数组创建的 api

// 默认的初始化方法
public init()

// 传入一个 序列 元素创建
public init<S : Sequence where S.Iterator.Element == Element>(_ s: S)

// 字面值创建
public init(arrayLiteral elements: Element...)

// 创建一个固定大小 重复值的数组
public init(repeating repeatedValue: Element, count: Int)

常见的空数组创建的方式

var arr1 = [Double]()                    // 推荐使用
var arr2 = Array<Double>()
var arr3: [Double] = []                  // 推荐使用
var arr4: [Double] = Array()
var arr5: Array<Double> = []
var arr6: Array<Double> = Array()
Snip20160901_14.png

推荐使用 arr1 和 arr3 的数组的创建方式。理由,简洁高效。

1.2 推荐的数组创建方式

let numbers = [1, 3, 5, 7, 9, 11, 13, 15]

let streets = ["Albemarle", "Brandywine", "Chesapeake"]
Snip20160901_15.png

注:使用 let 声明的数组不能再被修改。

**使用的是上面第三个 Array 的 init 函数。 **

这种创建数组的方式更加的高效和简洁。

1.3 Array 初始化演示

Array 结构体的申明

public struct Array<Element> : RandomAccessCollection, MutableCollection { }

api

public init()

在初始化的时候必须指定 数组中存储的 数据类型

// Array<Element> 
var arr = Array<Int>()

api

public init<S : Sequence where S.Iterator.Element == Element>(_ 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)
Snip20160901_16.png
let numbers = Array(0...10)

// 等效
let numbers1 = [0,1,2,3,4,5,6,7,8,9,10]
Snip20160901_17.png

api

// 这个函数不能直接调用,这个方法是由编译器调用,通过使用字面量来触发,
public init(arrayLiteral elements: Element...)
let ingredients = ["cocoa beans", "sugar", "cocoa butter", "salt"]
Snip20160901_18.png

api

// 创建一个,元素值重复,个数固定的数组
public init(repeating repeatedValue: Element, count: Int)
let fiveZs = Array(repeating: "Z", count: 5)
Snip20160901_19.png

1.4 数组的常用操作

let numbers = Array(0...10)

// 这个是遍历所有的元素
for number in numbers {
    print(number)
}

//  这种方式和上面是等价的 (区别: ..<  通过区间的调整,可以遍历数组中的部分元素)
for index in 1..<numbers.count {
    print(numbers[index])
}
Snip20160901_21.png

forEach

let numbers = Array(0...10)

numbers.forEach { (number) in
    print(number)
}
Snip20160901_22.png
上一篇下一篇

猜你喜欢

热点阅读