Bit 연산자를 사용해보신 적 있나요?
컴퓨터 구조론에서 처음 배웠던 XOR이니 하는 것들은 실제로 프로젝트에서 쓰는 경우는 많지 않죠.
펌웨어등 메모리가 한정적인 환경에서 사용했던 것 같아요.
예전에 Client Class를 만들 때 Option을 iOS에 내장된 Class 처럼 구현하고 싶었습니다.
분명 배열도 아니고 Enum도 아닌 것 같은데 특이한 형태였죠.
하나의 값을 설정할 수도 있고 조합된 값을 지정할 수도 있었습니다.
[.slient, .background, .retry]로 옵션을 지정하면 오류가 났을 때 메세지를 띄우지 않고 백그라운드로 처리하고 실패했을 때 재시도하는 거죠.
이런 특이한 형태를 Swift에서는 OptionSet이라는 Protocol로 구현할 수 있게 합니다.
조합할수 있는 값을 Shift 연산자를 통해 정의하기만 하면 됩니다.
그러나 그냥 enum을 사용하는게 적합한 경우도 있죠.
이 글은 어떤 경우에 OptionSet과 Enum을 사용하는 것이 좋은지 사용 유형별로 알려줍니다.