본문 바로가기
Xcode/Swift - PlayGround

PlayGround) Equatable에 대해서 알아보자

by 후르륵짭짭 2020. 8. 17.
728x90
반응형

안녕하세요! 후르륵짭짭입니다.

이번에는 Equatable에 대해서 알아보려고 합니다!!

Equtable은 비교연산을 해주는 것입니다.

두 객체가 같은지 다른지!!!

그래서 우리가 평소에 "one" == "two" 이러한 비교 연산을 사용 할 수 있는것이

String, Int, Double 등등 다 Equtable을 상속 받고 있기 때문입니다.

 

그런데 만약에 구조체나 클래스를 비교 할 때는 어떻게 될까요???

아래 처럼 Hururuek.name == ChapChap.name 이렇게 하지 않고 

구조체나 객체 자체를 동일 한가? 라고 물어보면 이렇게 오류가 나옵니다.

 

즉, 이렇게 객체 또는 구조체를 비교 하기 위해서는 Equatable이 필요한 것 입니다.

단순하게 Equtable만 넣어 줬는데도 가능합니다!!!

이렇게 Equtable만 넣어줬는데도 비교가 가능한 이유는 밑에 있는 인스턴스 들이 String와 Int로 Equatable을 가지고 있기 때문입니다.

만약에! 아래 처럼 Grade를 만들어 줬다면 이렇게 protocol을 준수 하지 않고 있다!! 오류 발생 이라고 알려줍니다.

그래서 fix 를 눌러 주면 아래 처럼 나옵니다.

    static func == (lhs: Student, rhs: Student) -> Bool {
       
    }

이것은 우리가 직접 비교문을 만들어 줘야합니다.

왼쪽과 오른쪽에 데이터가 들어 왔을 때, 어떻게 비교 해줄 것인지!

그래서 아래 처럼 이렇게 간단하게 해주면 ID 값이 달라도 이름과 성적이 같다면 같은 것으로 해라

라고 해주면 됩니다.

만약에 저렇게 임의적으로 따로 함수를 정의 해줘서 비교 하기 보단

모든 값이 동일 할 때만 동일 여부를 나타내고 싶다면 Grade에도 Equtable을 상속해주면 됩니다!

참 쉽죠?? ㅎㅎㅎ

 

 

728x90
반응형

댓글