• Swift初探02 数组、集合、元组、字典


    数组、集合、元组、字典

    每一门语言基本都会有这些数据结构,swift也不例外,而作为一门现代的语言,swift提供了很多的现成的方法给我们选择。

    一、数组

    01 数组的定义

    // 三种声明方式
    var a = [1, 2, 3] // 类型推断
    var b:[String] = ["hello", "world"]
    var c:Array<Double> = [1.3, 2.2] // 结构体
    var e = Array(repeating: -1, count: 3) // 通过初始化器生成一个初始值为-1,长度为3的数组 e = [-1, -1, -1]
    
    let f = [1, 2, 4] // 作为一个常量,不可修改
    

    当定义数组为Any类型时,可以让其中元素为不同类型的变量。var a:[Any] = [1, 2, "SSR"]

    如何定义空数组?

    var d = [Int]() // 通过初始化器,定义可变的空数组

    02 数组的遍历

    查看单个元素,swift数组和其他语言一样:

    print(a[2])
    a[0] = 1
    

    遍历所有元素:

    var array = ["a", 2, "3"]

    直接遍历:

    for item in array {
      print(item)
    }
    
    "a"
    2
    "3"
    

    根据索引进行遍历:

    for index in 0..<array.count {
      print(array[index])
    }
    
    "a"
    2
    "3"
    

    控制范围进行遍历:

    for item in array[1...2] {
      print(item)
    }
    
    2
    "3"
    

    03 数组的增删改查

    增:

    1. array.append(1)在末尾添加一个元素;
    2. array + ["hello", "world"]直接利用加号;
    3. array.insert("aaa", at: 1)在a[1]的位置插入"aaa"。

    删:

    1. array.remove(at: 0)删除索引0的位置

    改:

    1. array.replaceSubrange((0...1), with: ["mac", "windows", "lalala"])将数组a[0]到a[1]替换为mac与windows和lalala。

    查:

    1. array.contains("Hello")array中有元素为contains的值时,返回true;

    二、集合

    01 集合的定义

    set集合是无序且不重复的数据集合。

    var a:Set = [1, 2, 3]
    var b:Set<String> = ["hello", "world"]
    var c:Set<Int> = [1, 2, 3]
    var d:Set = ["A", 1] // 报错
    

    1. 不重复的集合

    var a:Set = [1, 1]
    print(d) // [1],swift会自动把多的删掉
    

    2. 无序的集合

    var a:Set = [1, 2, 3]
    print(a) // 每次输出都不同
    // [1, 2, 3]
    // [3 ,1 ,2]
    

    02 集合的增删改查

    var a:Set = [1, 2, 3]
    a.count // a的长度
    a.insert(5) // 插入5(集合是无序的,所以不用说明位置)
    a.remove(1) // 删除1
    a.contains(2) // true 
    

    三、元组

    01 元组的定义

    元组类型由 N个任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素”。

    • var a = (1, 1.5, "hello", true)

    • 上面这种是利用了swift的数据类型推断,如果想要更精确,我们还可以这么操作:var a:(Int, String, Bool) = (1, "hello", false)

    这两种方式最为常见。

    还可以用:

    • var a = (name1: "Xu", name2: "hangyu")
    • var a:(age:Int, name:String) = (20, "Xuhangyu") // 这样定义元组必须规定数据类型
    • var (age, name) = (20, "Xuhangyu")

    来定义元组。

    元组可以直接赋值:var b = a,并且元组并不是引用类型,a和b独立拥有各自的内存,元组是值类型的数据,他的复制并不是浅复制

    02 元素的访问

    var a = (1, 1.5, "hello", true)
    print(a.0) // 1
    print(a.3) // "hello"
    

    如果在定义时定义了元素名,我们就可以使用:print(a.name1)来访问对应的数据。

    如果使用了var (age, name) = (20, "Xuhangyu")定义元组,可以用print(age)来访问数据,但如果是普通的定义,必须使用print(a.name1)

    四、字典

    var a = [1: "asdasd", 2: "123"]
    var b:Dictionary<String,String> = ["a":"123", "b":"lalal"]
    var c = [1: 1, 2: 2 ]
    

    如何定义空字典?

    var a = [Int:String]() // 和定义空数组方法类似

    01 字典的取值

    var a = ["a": "123", "b": "12333333"]
    print(a["a"]) // Optional("123")
    print(a["a"] ?? "undefined")
    

    02 字典的修改与添加与删除

    var a = ["a": "123", "b": "12333333"]
    a.updateValue("dilidili", forKey: "a") // 有该key时修改
    a.updateValue("dilidili", forKey: "c") // 没有该key时新增
    a.removeValue(forKey: "a") // 删除
    
  • 相关阅读:
    EF 使用 oracle
    mysql安装笔记
    解决问题
    第四次冲刺
    第三次冲刺
    SQA
    第二次冲刺
    第一次冲刺,求进步
    Scrum _GoodJob
    我对git 、github的初印象
  • 原文地址:https://www.cnblogs.com/xhyccc/p/12722943.html
Copyright © 2020-2023  润新知