Swift-Tips之'==='與'=='的區(qū)別

正文

  • ==:它默認(rèn)比較基本類型的值,比如:Int,String等,它不可以比較引用類型(reference type)或值類型(value type),除非該類實現(xiàn)了Equatable
let str1 = "hello"
let str2 = "hello"
//true
print(str1 == str2)
  • ===:它是檢查兩個對象是否完全一致(它會檢測對象的指針是否指向同一地址),它只能比較引用類型(reference type),不可以比較基本類型和值類型(type value)

如果Student類不實現(xiàn)Equatable協(xié)議的話,它是不支持==運(yùn)算符的

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)

總結(jié)

  • ==只是比較兩個變量的值,并不會比較它們的指針是否指向同一內(nèi)存
  • ===不僅比較兩個變量的值,還會比較它們的指針是否指向同一內(nèi)存
  • ==比較兩個對象即使返回true這兩個對象也不一定是完全相同的,可能只是對象的屬性值相同,而===返回true則證明比較的對象是完全一致的

Link

blog

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容