[swift 進階]讀書筆記-C2P2字典

liaoWorking在掘金發表於2018-12-14

第二章:內建集合型別

2.2字典

字典的可變性:


    var dict = ["name":"liaoWorking","age":"17"]
複製程式碼

知識點1:書中提到了可以用updateValue(_:forKey:) 獲取到更新之前如果有值的舊值。

     /// 得到更新鍵值對之前的值 updateValue
    let oldValue = dict.updateValue("18", forKey: "age")
    print(oldValue) // Optional("17")
    print(dict["age"]) //Optional("18")
複製程式碼

注:這個方法在實際專案中的使用場景還沒怎麼想到? 歡迎大家補充場景。 我也是看書之後才發現還有這種操作。

有用的字典方法


字典的合併 merge

 let newDict = ["name":"Jane","age":"19","gender":"M"]
    dict.merge(newDict) { (dictValue, newDictValue) -> String in
        print(dictValue)    // liaoworking 相同key時候的dictValue
        print(newDictValue)     //Jane 相同key時候的newDictValue
        
        return newDictValue //返回你覺得應該選擇的value 我這裡預設都是newDictValue
    }
    print(dict)["name": "Jane", "age": "19", "gender": "M"]
複製程式碼

注:閉包裡面的處理是邏輯是當兩個dict 有相同的key return出我們覺得合適的value.

字典value的處理 mapValues

    ///字典的map方法
    let mapDict = dict.mapValues { (value) -> String in
        return "new"+value
    }
    print(mapDict)//["name": "newliaoWorking", "age": "new18"]
複製程式碼

這裡的使用邏輯和陣列中的map類似 不贅述。

Hashable 要求


知識點1:字典的本質是雜湊表,通過鍵的hashValue來確定每個鍵的位置,所以key必須要準守Hashable協議。

文章原始檔地址

相關文章