Swift-Tips之'==='與'=='的區別
阿新 • • 發佈:2018-11-06
正文
==
:它預設比較基本型別的值,比如: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則證明比較的物件是完全一致的