develop
Class Struct == Operator 본문
반응형
class나 struct에서 비교연산자를 사용하면
struct Example1 {
var value: Int?
}
let structExample1 = Example1()
let structExample2 = Example1()
if structExample1 == structExample2 {
}
class Example2 {
var value: Int?
}
let classExample1 = Example2()
let classExample2 = Example2()
if classExample1 == classExample2 {
}
error: binary operator '==' cannot be applied to two 'Example1' operands 라는 에러가 난다.
하지만 struct나 class를 비교해야 할때가 많다.
이럴때는 비교연산자를 직접 만들어줘야 한다.
전역으로 비교연산자 만들기
struct Example1 {
var value: Int?
}
func ==(lhs: Example1, rhs: Example1) -> Bool {
return lhs.value == rhs.value
}
let structExample1 = Example1()
let structExample2 = Example1()
if structExample1 == structExample2 {
}
static 메서드로 비교연산자 만들기
struct Example1 {
var value: Int?
static func ==(lhs: Example1, rhs: Example1) -> Bool {
return lhs.value == rhs.value
}
}
let structExample1 = Example1()
let structExample2 = Example1()
if structExample1 == structExample2 {
}
class도 동일하게 사용할 수 있다.
class Example2 {
var value: Int?
static func ==(lhs: Example2, rhs: Example2) -> Bool {
return lhs.value == rhs.value
}
}
let classExample1 = Example2()
let classExample2 = Example2()
if classExample1 == classExample2 {
}
lhs와 rhs는 Left-hand system, Right-hand system이란 뜻이다.
반응형
'iOS' 카테고리의 다른 글
Require (0) | 2021.01.29 |
---|---|
Class convenience init (0) | 2021.01.28 |
Struct initialization (0) | 2021.01.26 |
autoreleasepool (0) | 2021.01.25 |
BackgroundFetch 앱 백그라운드 상태에서 로직 실행하기 (0) | 2021.01.24 |
Comments