본문 바로가기
iOS/설명

[iOS] '==' vs '==='

by Sky Titan 2024. 3. 17.
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

댓글