iOS/설명
[iOS] '==' vs '==='
Sky Titan
2024. 3. 17. 21:48
728x90
https://ios-development.tistory.com/393
[iOS - swift] == 와 === 의 차이 (+ Equtable)
`==` vs `===` a == b: a의 값과 b의 value가 같은지 비교 let value1 = 1 let value2 = 2 print(value1 == value2) // false a === b: a가 참조하고 있는 인스턴스와 b가 참조하고 있는 인스턴스가 같은지 비교 swift에서는 크
ios-development.tistory.com
== vs ===
- ==
- 각 변수의 Value를 비교한다.
- Stack 영역의 값을 비교
- Equatable을 채택해서 static func ==() method를 선언하면 사용할 수 있다.
- ===
- 각 변수가 참조하고 있는 instance를 비교한다
- Heap 영역의 값을 비교
- 때문에 reference type인 변수들이 같은 instance를 참조하고 있는지 직접 비교가 가능하다.
== 사용 예시
let a: Int = 1
let b: Int = 2
print(a == b)
// false
class Test: Equatable {
static func == (lhs: Test, rhs: Test) -> Bool {
return lhs.value == rhs.value
}
let value: Int
init(value: Int) {
self.value = value
}
}
let c = Test(value: 1)
let d = Test(value: 1)
print(c == d)
// true
=== 사용 예시
class Test: Equatable {
static func == (lhs: Test, rhs: Test) -> Bool {
return lhs.value == rhs.value
}
let value: Int
init(value: Int) {
self.value = value
}
}
let a = Test(value: 1)
let b = Test(value: 1)
let c = Test(value: 2)
let d = c
print(a == b)
// true -> 같은 value를 가짐
print(a === b)
// false -> 같은 instance를 참조하고 있지 않음
print(c === d)
// true -> 같은 instance를 참조함728x90