리터럴
이 문서에서는 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) |
명명된 리터럴
상수로 사용할 값은 리터럴 특성으로 표시할 수 있습니다.
이 특성은 값이 상수로 컴파일되도록 하는 효과가 있습니다. 다음 예제에서는 둘 다 x
y
변경할 수 없는 값이지만 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진수 또는 이진으로 0x
0o
0b
지정할 수도 있습니다.
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
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기