1. 程式人生 > >Swift-Tips之'==='與'=='的區別

Swift-Tips之'==='與'=='的區別

正文

  • ==:它預設比較基本型別的值,比如: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