美文网首页
Swift-Tips之'==='与'==

Swift-Tips之'==='与'==

作者: 上帝也是码农 | 来源:发表于2018-11-06 20:59 被阅读7次

    正文

    • ==:它默认比较基本类型的值,比如:Int,String等,它不可以比较引用类型(reference type)或值类型(value type),除非该类实现了Equatable
    let str1 = "hello"
    let str2 = "hello"
    //true
    print(str1 == str2)
    
    • ===:它是检查两个对象是否完全一致(它会检测对象的指针是否指向同一地址),它只能比较引用类型(reference type),不可以比较基本类型和值类型(type value)

    如果Student类不实现Equatable协议的话,它是不支持==运算符的

    class Student: Equatable {
        var name = ""
        init(name: String) {
            self.name = name
        }
        
        static func == (lhs: Student, rhs: Student) -> Bool {
            return lhs.name == rhs.name
        }
    }
    
    let stu1 = Student(name: "rose")
    let stu2 = Student(name: "rose")
    let stu3 = stu1
    //true
    print(stu1 == stu2)
    //true
    print(stu1 === stu3)
    //false
    print(stu1 === stu2)
    

    总结

    • ==只是比较两个变量的值,并不会比较它们的指针是否指向同一内存
    • ===不仅比较两个变量的值,还会比较它们的指针是否指向同一内存
    • ==比较两个对象即使返回true这两个对象也不一定是完全相同的,可能只是对象的属性值相同,而===返回true则证明比较的对象是完全一致的

    Link

    blog

    相关文章

      网友评论

          本文标题:Swift-Tips之'==='与'==

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