Swift入門基礎2——集合和枚舉

數組

創建一個數組,可變的空數組,打印結果為[]

        var arr1 = [String]()
        print(arr1)

以字面量初始化一個數組:

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        print(arr1)

因為Swift有類型檢測,所以不用申明數組類型也完全可以,它會根據所賦的字面值自己推斷未String類型

        var arr1 = ["wang66", "wang77", "wang88"]
        print(arr1)

給數組追加新的元素:

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        arr1.append("wang99")
        print(arr1)

給數組追加新的數組:

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        arr1 += ["wang99", "wang00"]
        print(arr1)

將倆數組拼接。在Swift中字符串和集合拼接都用+號就行

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        var arr2 = ["wang99", "wang00"]
        var resultArr = arr1 + arr2
        print(res ultArr)

對數組進行刪除操作。下面幾個刪除方法均有返回值,返回被刪除的數組元素。通常情況下你不用管返回值。

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        arr1.removeLast()
        arr1.removeFirst()
        let deletedElement = arr1.remove(at: 0)
        print(deletedElement)
        print(arr1)

修改、更新數組元素。你不僅可以通過下標索引修改一個元素,也可以批量修改。

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        arr1[0] = "Jobs"
        arr1[1...2] = ["Yaren", "Tom"] // 根據下標區間,批量修改
        print(arr1)

讀取數組。

        let str0 = resultArr[0]
        print(str0)

        let strFirst = resultArr.first
        if let tempStr = strFirst{
            print(tempStr)
        }
        print(strFirst!)
        
        let strLast = resultArr.last
        print(strLast!)

數組中插入元素

        var arr1: [String] = ["wang66", "wang77", "wang88"]
        arr1.insert("wang00", at: 0)
        print(arr1)

遍歷數組。當需要數組索引時,可以用enumerated()遍歷得到一個個元組,index即為索引,value即為元素的值。

        // 遍歷數組
        for item in resultArr {
            print(item)
        }
        for (index, value) in resultArr.enumerated() {
            print("item=\(index), value=\(value)")
        }

字典

字典的用法和數組很相似。

創建一個字典。一個key和value均為String類型的字典,隨即設置字符串"wang1"為鍵"name"的值

        var dict1 = [String:String]()
        dict1["name"] = "wang1"
        print(dict1)

以字面量初始化一個字典。鍵值均為String類型,且已有兩個鍵nameage

        var dict2: [String:String] = ["name":"wang1", "age":"23"]
        print(dict2)

與數組類似的,它也完全可以不必申明鍵值類型,Swift會自己檢測

        var dict3 = ["name":"wang1"]
        print(dict3)

修改、更新鍵值。也提供了updateValue(value: forkey:)方法,它有返回值,代表被修改的鍵的原始值。一般可忽略該返回值。

        var dict = ["name":"wang66", "age":"24"]
        dict["age"] = "18"
        let result = dict.updateValue("wang666", forKey: "name")
        print(result!)
        print(dict)

刪除字典元素,刪除某鍵對應的數據。

        var dict = ["name":"wang66", "age":"24"]
        dict.removeValue(forKey: "age")
        print(dict)

遍歷字典。遍歷字典時是一個個的元組。

        // 遍歷
        for (dictKey, dictValue) in dict1 {
            print("\(dictKey)=\(dictValue)")
        }
        
        // 遍歷所有key
        for key in dict1.keys {
            print("key=\(key)")
        }
        
        // 遍歷所有values
        for value in dict2.values {
            print("value=\(value)")
        }

枚舉

在OC中可以把枚舉理解為取了個別名的整型數。但是Swift的枚舉卻發生了很大變化,它可以是任意類型。應該這么說,定義了一個枚舉,就是定義了一個類型,它里面的成員的類型就是該枚舉,它有點類似類和結構體的感覺。 比如下面定義了一個PositionType枚舉,對于它的成員north,south...來說,它們的類型就是PositionType

enum PositionType {
    case north
    case south
    case east
    case west
}

使用時直接用點語法就可以了。當通過點語法將枚舉值賦給direction時,Swift便會推斷出其類型,所以再后續操作direction時,甚至可以省略枚舉名了,直接用點語法點出它的成員來。

        var direction = PositionType.north
        direction = .east
        print(direction)
        // log:east

Swift中可以給枚舉的成員設置“原始值”,所有成員的原始值的類型必須相同。下面這個叫BallType的枚舉,它的成員原始值都是String類型的。

enum BallType: String {
    case basketball = "BB"
    case football = "FB"
    case golfball = "GB"
}

現在給枚舉的成員已然設置了“原始值”,那我們怎么獲取“原始值”呢?——通過成員的rawValue方法。

        let rawValue = BallType.basketball.rawValue
        print(rawValue)

** 枚舉的隱式賦值:**雖說Swift中的枚舉成員不像OC那樣,默認第一個成員值為0,然后依次遞增。Swift的枚舉成員默認是沒值的,更不用說值遞增了。但是,若你手動的給第一個成員設置一個值,那此時,它后面的成員便會遞增。

定義一個分數等級的枚舉。將第一個成員D手動賦值為1。

// 分數等級
enum ScoreLevel: Int {
    case D = 1
    case C
    case B
    case A
}

獲取成員B的值,打印結果可以看到B的值為3。

        let score = ScoreLevel.B.rawValue
        print(score)
        // log:3
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容