Java에서 상수 집합을 정의하기 위해서 enum 이라는 것을 사용합니다. 상수라는 것은 고유한 요소로 프로그램이 돌아갈 때 바뀌지 않는 변수로 이해하면 됩니다.(상”수”라고 숫자가 아닙니다.) 하나의 변수 혹은 클래스가 정의한 순간 이후로 바뀌지 않도록 하기 위해 final 이라는 것을 사용합니다. 아래의 경우 Month class는 각각의 월을 상수로 사용하기 위해 만들어진 클래스입니다.
보시면 public static final Month 이라는 문구가 반복적으로 쓰여 있는 것을 확인할 수 있습니다. 이것이 비효율적이라고 생각되어 나온 것이 Enumeration 입니다. enum은 앞서 언급한 것처럼 상수를 열거한 집합입니다.
위의 예제에서 볼 수 있듯이 enum은 상수의 변하지 않는 속성 때문에 switch문에서 많이 사용합니다.
case let 용법을 통해서 switch문에서 구문 안으로 임시 변수를 넣을 수 있습니다. Optional 타입의 if let 구문과 유사한 것 같네요.
3. Swift Enumeration
Enumeration 개념은 Java나 Swift 모두 비슷한 것 같네요. 다른 예제를 봐보겠습니다.
이 경우 ace는 int 1로 선언됩니다. 기타 two, three 등은 “two”, “three”의 String으로 초기화 됩니다. 흥미로운 점은 simpleDescription 함수에 있습니다. 여기서 simpleDescription은 switch문을 호출합니다. 이 때 넘기는 인자는 self로 Rank 자신입니다. Swift는 이런 경우 축약형을 쓰는 것을 허용합니다. 즉, case .ace:만 써도 이를 self.ace로 인식하여 올바른 결과를 출력할 수 있게 해준다는 것입니다. 또한 다음과 같은 것도 가능합니다.
한 번 enum을 선언했던 변수에는 enum 객체 명(Rank)을 생략해도 올바른 결과가 나옵니다.
내용 출처 : The swift Programming Language(3.0.1), nextree - Java: enum의 뿌리를 찾아서…