리터럴

이 문서에서는 F#에서 리터럴의 형식을 지정하는 방법을 보여 주는 테이블을 제공합니다.

리터럴 형식

다음 표에서는 F#의 리터럴 형식을 보여줍니다. 16진수 표기법의 숫자를 나타내는 문자는 대/소문자를 구분하지 않습니다. 형식을 식별하는 문자는 대/소문자를 구분합니다.

Type 설명 접미사 또는 접두사 예제
sbyte 부가된 8비트 정수 y 86y

0b00000101y
바이트 부호 없는 8비트 자연수 uy 86uy

0b00000101uy
int16 부가된 16비트 정수 s 86s
uint16 부호 없는 16비트 자연수 us 86us
int

int32
부가된 32비트 정수 l 또는 none 86

86l
uint

uint32
부호 없는 32비트 자연수 u 또는 ul 86u

86ul
nativeint 부호 있는 자연수에 대한 네이티브 포인터 n 123n
unativeint 부호 없는 내수로 네이티브 포인터 un 0x00002D3Fun
int64 부가된 64비트 정수 L 86L
uint64 부호 없는 64비트 자연수 UL 86UL
single, float32 32비트 부동 소수점 숫자 F 또는 f 4.14F 또는 4.14f
Lf 0x00000000lf
플 로트; 더블 64비트 부동 소수점 숫자 없음 4.14 또는 2.3E+32 또는 2.3e+32
LF 0x0000000000000000LF
bigint 정수는 64비트 표현으로 제한되지 않습니다. I 9999999999999999999999999999I
decimal 고정 소수점 또는 합리 숫자로 표현되는 소수 자릿수 M 또는 m 0.7833M 또는 0.7833m
Char 유니코드 문자 없음 'a' 또는 '\u0061'
문자열 유니코드 문자열 없음 "text\n"

또는

@"c:\filename"

또는

"""<book title="Paradise Lost">"""

또는

"string1" + "string2"

문자열도 참조하세요.
바이트 ASCII 문자 B 'a'B
byte[] ASCII 문자열 B "text"B
문자열 또는 바이트[] 축자 문자열 @ 접두사 @"\\server\share" (유니코드)

@"\\server\share"B (ASCII)

명명된 리터럴

상수로 사용할 값은 리터럴 특성으로 표시할 수 있습니다.

이 특성은 값이 상수로 컴파일되도록 하는 효과가 있습니다. 다음 예제에서는 둘 다 xy 변경할 수 없는 값이지만 x 런타임에 계산되는 반면 y 컴파일 시간 상수는 계산됩니다.

let x = "a" + "b" // evaluated at run-time

[<Literal>]
let y = "a" + "b" // evaluated at compile-time

예를 들어 이 구분은 컴파일 중에 값을 myDLL 알아야 하는 특성이므로 외부 함수DllImport를 호출할 때 중요합니다. 선언이 [<Literal>] 없으면 이 코드가 컴파일되지 않습니다.

[<Literal>]
let myDLL = "foo.dll"

[<DllImport(myDLL, CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()

패턴 일치 식에서 소문자로 시작하는 식별자는 항상 리터럴이 아닌 바인딩할 변수로 처리되므로 일반적으로 리터럴을 정의할 때 초기 대문자를 사용해야 합니다.

[<Literal>]
let SomeJson = """{"numbers":[1,2,3,4,5]}"""

[<Literal>]
let Literal1 = "a" + "b"

[<Literal>]
let FileLocation =   __SOURCE_DIRECTORY__ + "/" + __SOURCE_FILE__

[<Literal>]
let Literal2 = 1 ||| 64

[<Literal>]
let Literal3 = System.IO.FileAccess.Read ||| System.IO.FileAccess.Write

설명

명명된 리터럴은 다음과 같은 경우에 유용합니다.

  • 절 없이 when 패턴 일치
  • 특성 인수입니다.
  • 정적 형식 공급자 인수입니다.

유니코드 문자열에는 16비트 16비트 16비트 16진수 코드(0000 - FFFF) 또는 UTF-32 인코딩을 사용하여 \U 지정할 \u 수 있는 명시적 인코딩과 유니코드 코드 포인트(00000000 - 0010FFFF)를 나타내는 32비트 16비트 16진수 코드가 포함될 수 있습니다.

비트 연산자 이외의 ||| 사용은 허용되지 않습니다.

다른 베이스의 정수

부록 32비트 정수는 각각 16진수, 8진수 또는 이진으로 0x0o0b 지정할 수도 있습니다.

let numbers = (0x9F, 0o77, 0b1010)
// Result: numbers : int * int * int = (159, 63, 10)

숫자 리터럴의 밑줄

숫자를 밑줄 문자(_)로 구분할 수 있습니다.

let value = 0xDEAD_BEEF

let valueAsBits = 0b1101_1110_1010_1101_1011_1110_1110_1111

let exampleSSN = 123_45_6789