[Swift] class, struct, enum

horeng2·2022년 5월 3일
0
post-thumbnail

면접 단골질문: class, struct, enum 간단 정리

class

class는 참조타입이다. 참조타입 참조타입 하는데 참조타입이라는 게 뭔 말일까?
참조 타입에서는 새로 만들어진 변수나 상수가 원본의 값이 아닌 주소를 가리킨다.
값이 아닌 주소! 기억!!!

struct

struct는 상속이 불가능하고, 값타입이다.
따라서 struct를 이용해서 인스턴스를 생성할 때 변수나 상수에 값이 복사되어서 할당된다.
이 값은 스택 영역에 저장된다.

enum

enum 역시 값타입으로, 관련 값을 하나의 유형으로 묶어서 정의한 타입이다.
class, struct와 다르게 이니셜라이저를 갖지 않고, 저장 프로퍼티를 가질 수 없다.
상속도 불가능하다.

🧐 enum이 관련 값을 묶어서 정의한 거라고..?근데 그건 struct, array도 가능하지 않나요? 🤔

네...

그렇다면 enum을 쓰는 이유는 뭘까?

간단히 세줄요약하면 다음과 같다.

  • case 사용으로 인한 이점
  • 컴파일타임에 에러 확인 가능
  • 휴먼에러 방지

일단, case로 정의된 enum은 switch문과 함께 사용하면 간결하고 가독성 높은 코드를 구현할 수 있다. 추가적으로 각 case는 비트 단위의 고유값을 가지기 때문에 비교문에서의 비교가 빠르다는 장점도 있다고 한다.
또한 배열의 경우 nil값이 들어있는 경우..등등..런타임 에러가 발생할 여지가 있지만, enum은 이런 오류를 컴파일러가 잡아주기 때문에 컴파일타임에 에러를 확인할 수 있다.
마지막으로, struct로 enum의 기능적인 요소는 대응할 수 있지만 enum의 경우 인스턴스를 생성하지 않고 상수로 접근할 수 있도록 만들어져 있기 때문에 휴먼에러의 여지가 줄어든다.

profile
삐약

0개의 댓글