enum자료형이란?
'나열형'이라고 불리며 서로 연관된 상수들을 묶어 값을 지정하는 자료형입니다. enum의 장점은 연관은 없지만 같은 이름을 가지게 되는 상수끼리의 충돌을 방지하고 상수의 가독성을 좋게 하는 자료형입니다.
enum 선언
우선 선언을 하고 상수들이 값을 가지는 원리를 설명드리고 enum을 어떻게 활용하는지 설명 드리겠습니다.
enum Fruits {apple,banana,peach,kiwi}
enum을 선언하면 0~255까지의 수를 가지는 상수 집합을 가지며 각 번호마다 이름을 부여 가능합니다.
선언 방법은 위와 같으며 예시처럼 선언을 하는 경우 apple = 0, banana = 1, peach = 2, kiwi = 3의 값을 가집니다.
변수가 아닌 상수를 선언한 것이기 때문에 각각의 값은 코드를 바꾸지 않는 이상 변하지 않습니다.
만약 아래와 같이 중간에 값을 변경한다면 apple = 0으로 동일하고 banana = 4로 정하였으므로 그 이후에 오는 과일은 지정된 값에서 오름차순으로 입력되어 peach = 5, kiwi = 6이 됩니다.
enum Fruits {apple, banana=4, peach, kiwi}
enum을 사용하는 이유
상수를 구분하게 되어 가독성을 높일 수 있으며 같은 이름을 가지게 되는 경우를 방지할 수 있습니다.
예시를 보며 자세히 설명드리겠습니다.
코딩을 하는 경우 보상으로 금, 은, 동을 상수로 선언하고 이용자의 등급으로 금, 은, 동을 상수로 선언하는 경우 아래와 같이 선언할 수 있습니다.
enum Gift {gold, silver, bronze}
enum Ranking {gold=1, silver, bronze}
보상의 경우는 gold=0, silver=1, bronze=2의 값을 가지는 상수가 선언이 되었고 등급의 경우는 gold=1, silver=2, bronze=3으로 선언이 되었습니다.
같은 금, 은, 동이지만 등급은 1급, 2급, 3급으로 표현을 하기 위하여 1, 2, 3을 가지도록 선언이 되었습니다.
따라서 같은 이름을 가지는 상수지만 값은 다르게 주게 되어도 충돌을 막을 수 있습니다.
enum의 활용
선언을 하는 방법을 배우셨으니 이번에는 활용을 하는 방법을 설명드리겠습니다.
enum Ranking {gold = 1, silver, bronze}
Ranking jude = Ranking.gold;
Ranking bob = Ranking.sliver;
Ranking tom = Ranking.bronze;
자료형을 선언 할 때는 자료형(type) 이름(name) = 데이터(data); 식으로 선언이 됩니다.
따라서 Ranking이라는 자료형(type), jude, bob, tom이라는 이름(name)과 선언해두었던 상수(data)가 오게 되어 각각의 이름이라는 변수에 상수를 선언해주게 되었습니다.
enum의 상수를 사용할 때는 어떤 묶음의 상수인지 표시하기 위하여 Ranking(묶음의 이름).gold(원하는 상수)로 적어줍니다.
이러한 방법으로 사용을 하기 때문에 코드를 읽을 때 등급의 gold인지 보상의 gold인지 확인도 가능하고 gold끼리의 충돌도 방지하여 가독성과 코드의 단순화가 가능합니다.