Generic은 동일한 코드를 여러 다른 타입에 대해 재사용할 수 있도록 도와주는 기능입니다.
쉽게 말하자면, 일반적인 타입과는 달리 나중에 원하는 형태로 정의가 가능한 그러한 기능입니다.
Generic을 사용하면 클래스, 함수 또는 인터페이스에 대한 타입 정보를 매개변수로 지정할 수 있습니다. Generic의 사용을 통해 해당 코드를 여러 다른 타입에 대해 사용할 수 있으며, 타입 안전성과 재사용성을 개선할 수 있습니다.
다음은 Generic을 사용하는 방법입니다.
Dart에서 Generic을 정의하기 위해서는 <T>
와 같은 형태로 타입 매개변수를 사용합니다. (여기서 T
는 임의의 타입을 나타냅니다.)
보통 Generic은 <E>
나 <K, V>
와 같이 사용되는데, 여기서 E는 Element
, K는 Key
, V는 Value
로 사용됩니다.
또한, 미정인 타입, 임의의 타입을 클래스에 사용이 가능합니다. 타입에 제약을 줘서 조건을 걸 수도 있습니다. 예) E extends Book / E implement Book
위의 예시에서 Generic
클래스는 E
라는 타입 매개변수를 갖습니다. value
필드의 타입과 getValue
메서드의 반환 타입은 모두 E
로 선언되었습니다. 이를 통해 main
에서 Generic
의 인스턴스를 생성할 때, 실제 타입을 지정할 수 있으며, 해당 타입에 대한 값을 저장하고 반환할 수 있습니다.
Generic을 사용하면 코드의 재사용성이 증가하고 타입 안정성이 개선되기 때문에 Dart에서는 Generic을 지원합니다. Generic을 사용하면 타입에 대한 추상화와 재사용성을 달성할 수 있으며, 코드의 유지 보수성과 가독성을 향상시킬 수 있습니다.
Dart에서는 enum(열거형) 데이터 형식을 지원합니다.
enum은 한정된 값의 집합을 정의할 때 사용되며, 주로 상수 값들의 그룹을 표현하는데 사용됩니다. 더 쉽게 말하자면, 정해둔 값만 넣을 수 있는 데이터 타입이라는 뜻입니다.
Dart에서 enum은 말그대로 enum
키워드를 클래스 밖에 사용하여 선언합니다.
위의 예시에서 enum
을 사용한 Color
는 enum의 이름이며, 내부에는 white / yellow / blue
라는 열거 상수가 들어있습니다.
enum 상수는 정수 값에 자동으로 대응되며, 0부터 순서대로 1씩 증가합니다. 즉, Color.white
는 0에 해당하고, Color.yellow
는 1에, Color.blue
는 2에 해당하게 됩니다. 이러한 값은 index
속성을 사용하여 얻을 수 있습니다.
또한, enum은 switch문
과 함께 사용해야하기 때문에 패턴 매칭에 유용하게 활용될 수 있습니다.
enum은 코드의 가독성을 높이고, 일정한 값의 집합을 정의할 때 유용하게 사용될 수 있습니다.