Bibi's DevLog π€π
[Swift] ===(_:_:) μ !==(_:_:) λ³Έλ¬Έ
===(::)
λ μ°Έμ‘°κ° λμΌν μΈμ€ν΄μ€ κ°μ²΄λ₯Ό κ°λ¦¬ν€λμ§λ₯Ό λνλ΄λ Booleanκ°μ λ°νν©λλ€.
func === (lhs: AnyObject?, rhs: AnyObject?) -> Bool
lhs
,rhs
: λΉκ΅ν μ°Έμ‘°
μ€λͺ
μ΄ μ°μ°μλ λ μΈμ€ν΄μ€κ° κ°μ κ°μ΄ μλλΌ, κ°μ κ³ μ μ±(identity)μ κ°μ§κ³ μλμ§λ₯Ό νμΈν©λλ€. κ°μ λμΌμ±μ μν΄μλ, ==
μ°μ°μμ Equatable
νλ‘ν μ½μ νμΈνμμμ€.
μλ μμλ μ μν νμ
μ μ°Έμ‘° μλ―Έκ° μλ IntegerRef
λΌλ νμ
μ μ μν©λλ€.
class IntegerRef: Equatable {
let value: Int
init(_ value: Int) {
self.value = value
}
}
func ==(lhs: IntegerRef, rhs: IntegerRef) -> Bool {
return lhs.value == rhs.value
}
IntegerRef
λ ν΄λμ€μ΄λ―λ‘, κ·Έκ²μ μΈμ€ν΄μ€λ ===
μ°μ°μλ₯Ό μ¬μ©ν΄ λΉκ΅ν μ μμ΅λλ€. λν, IntegerRef
κ° Equatable
νλ‘ν μ½μ μ€μνλ―λ‘, μΈμ€ν΄μ€λ ==
μ°μ°μλ‘λ λΉκ΅λ μ μμ΅λλ€.
let a = IntegerRef(10)
let b = a
print(a == b)
// Prints "true"
print(a === b)
// Prints "true"
===
μ°μ°μλ λ μΈμ€ν΄μ€μ κ°μ΄ κ°λλΌλ, λ μΈμ€ν΄μ€κ° μλ‘ λ€λ₯Έ μΈμ€ν΄μ€ κ°μ²΄λ₯Ό μ°Έμ‘°νλ€λ©΄ false
λ₯Ό λ°νν©λλ€.
let c = IntegerRef(10)
print(a == c)
// Prints "true"
print(a === c)
// Prints "false"
!==(::)
λ μ°Έμ‘°κ° μλ‘ λ€λ₯Έ μΈμ€ν΄μ€ κ°μ²΄λ₯Ό κ°λ¦¬ν€λμ§λ₯Ό λνλ΄λ Booleanκ°μ λ°νν©λλ€.
func !== (lhs: AnyObject?, rhs: AnyObject?) -> Bool
lhs
,rhs
: λΉκ΅ν μ°Έμ‘°
μ€λͺ
μ΄ μ°μ°μλ λ μΈμ€ν΄μ€κ° λ€λ₯Έ κ°μ΄ μλλΌ, λ€λ₯Έ κ³ μ μ±(identity)μ κ°μ§κ³ μλμ§λ₯Ό νμΈν©λλ€. κ°μ λΉλμΌμ±μ μν΄μλ, !=
μ°μ°μμ Equatable
νλ‘ν μ½μ νμΈνμμμ€.