美文网首页
Swift 5.x Set 定义、创建

Swift 5.x Set 定义、创建

作者: ShenYj | 来源:发表于2020-06-25 22:26 被阅读0次

    1. 创建Set

    • 1.1 使用初始化器语法来创建一个确定类型的空Set

    let letters = Set<Character>()
    
    • 1.2 使用数组字面量创建Set

    var letters: Set<String> = ["Math", "English", "History"]
    

    注: 如果不指定类型为Set, 默认初始化的是数组

    2. Set 类型的哈希值

    • 为了能让类型储存在Set当中, 他必须是可哈希的, 就是说类型必须提供计算它自身哈希值的方法.
    • 所有Swift的基础类型(比如String, Int, DoubleBool)默认都是可哈希的, 并且可以用于Set或者Dictionary的键

    e.g.

    struct Person {
        var name: String = ""
        var age: Int = 0
    }
    var personSet = Set<Person>()  -->`Type 'Person' does not conform to protocol 'Hashable'`
    

    注意此时在初始化这个Set的时候, 编译器会提示错误: Type 'Person' does not conform to protocol 'Hashable'

    遵循Hashable协议后, 警告消失

    struct Person: Hashable {
        var name: String = ""
        var age: Int = 0
    }
    var personSet = Set<Person>()
    

    通过extension

    struct Person {
        var name: String = ""
        var age: Int = 0
    }
    extension Person: Hashable {
        func hash(into hasher: inout Hasher) {
            hasher.combine(name)
            hasher.combine(age)
        }
    }
    
    var personSet = Set<Person>()
    personSet.insert(Person(name: "zhangsan", age: 25))
    personSet.insert(Person(name: "zhangsan", age: 25))
    print(personSet)
    

    相关文章

      网友评论

          本文标题:Swift 5.x Set 定义、创建

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