美文网首页
Swift Standard Library —— Array,

Swift Standard Library —— Array,

作者: Laughingg | 来源:发表于2016-09-01 13:49 被阅读213次
    // 数组
    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 数组的常用操作

    • **数组的遍历 **
      **for - in **
    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

    相关文章

      网友评论

          本文标题:Swift Standard Library —— Array,

          本文链接:https://www.haomeiwen.com/subject/sqgcettx.html