열거형
열거형(열거형이라고도 함)은 값의 하위 집합에 레이블이 할당되는 정수 형식입니다. 코드를 더 읽기 쉽고 유지 가능하도록 만들기 위해 리터럴 대신 이를 사용할 수 있습니다.
구문
type enum-name =
| value1 = integer-literal1
| value2 = integer-literal2
...
설명
열거형은 값을 지정할 수 있다는 점을 제외하고 단순 값이 있는 구분된 공용 구조체와 비슷합니다. 값은 일반적으로 0 또는 1에서 시작하는 정수 또는 비트 위치를 나타내는 정수입니다. 열거형이 비트 위치를 나타내기 위한 경우 Flags 특성도 사용해야 합니다.
열거형의 기본 형식은 사용되는 리터럴에서 결정되므로 예를 들어 부호 없는 정수() 형식에 대해 접미사와 함께 리터1u
2u
럴을uint32
사용할 수 있습니다.
명명된 값을 참조하는 경우 열거형 형식 자체의 이름을 한정자로 사용해야 합니다. 즉, enum-name.value1
단지 value1
. 이 동작은 차별된 노조의 동작과 다릅니다. 열거형에는 항상 RequireQualifiedAccess 특성이 있기 때문입니다.
다음 코드에서는 열거형의 선언 및 사용을 보여 줌
// Declaration of an enumeration.
type Color =
| Red = 0
| Green = 1
| Blue = 2
// Use of an enumeration.
let col1: Color = Color.Red
다음 코드와 같이 적절한 연산자를 사용하여 열거형을 기본 형식으로 쉽게 변환할 수 있습니다.
// Conversion to an integral type.
let n = int col1
열거형 형식은 다음 기본 형식 sbyte
중 하나를 가질 수 있습니다. , ,byte
int16
, uint16
, int32
uint32
, int64
uint64
및 .char
열거형 형식은 .NET Framework에서 상속된 System.Enum
형식으로 표시되며, 이 형식은 다시 상속됩니다 System.ValueType
. 따라서 포함하는 개체의 스택 또는 인라인에 있는 값 형식이며 기본 형식의 모든 값은 열거형의 유효한 값입니다. 이는 명명되지 않은 값을 catch하는 패턴을 제공해야 하므로 열거형 값에서 패턴 일치 시 중요합니다.
F# 라이브러리의 함수를 enum
사용하여 미리 정의된 명명된 값 중 하나 이외의 값도 열거형 값을 생성할 수 있습니다. 함수는 enum
다음과 같이 사용합니다.
let col2 = enum<Color> (3)
기본 enum
함수는 형식 int32
에서 작동합니다. 따라서 다른 기본 형식이 있는 열거형 형식에는 사용할 수 없습니다. 대신 다음을 사용합니다.
type uColor =
| Red = 0u
| Green = 1u
| Blue = 2u
let col3 = Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue<uint32, uColor>(2u)
또한 열거형의 경우는 항상 .로 public
내보내집니다. 따라서 C# 및 나머지 .NET 플랫폼과 일치합니다.
참고 항목
.NET