リテラル

この記事では、F# でリテラルの型を指定する方法を示す表を示します。

リテラル型

F# のリテラル型を次の表に示します。 16 進表記で桁を表す文字は、大文字と小文字を区別しません。型を識別する文字は、大文字と小文字を区別します。

種類 説明 サフィックスまたはプリフィックス
sbyte 符号付き 8 ビット整数 86y

0b00000101y
byte 符号なし 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
float、double 64 ビット浮動小数点数 なし 4.14 または 2.3E+32 または 2.3e+32
LF 0x0000000000000000LF
bigint 64 ビット表現に制限されない整数 I 9999999999999999999999999999I
decimal 固定小数点数または有理数として表現される小数 M または m 0.7833M または 0.7833m
Char Unicode 文字 なし 'a' または '\u0061'
文字列 Unicode 文字列 なし "text\n"

or

@"c:\filename"

or

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

or

"string1" + "string2"

文字列」も参照してください。
byte ASCII 文字 B 'a'B
byte[] ASCII 文字列 B "text"B
String または byte[] 逐語的文字列 @ プリフィックス @"\\server\share" (Unicode)

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

名前付きリテラル

定数とする値には、Literal 属性を指定できます。 この属性には、値が定数としてコンパイルされる効果があります。

パターン マッチ式では、小文字で始まる識別子は、リテラルとしてではなく常にバインドされる変数として扱われます。そのため、一般的に、リテラルを定義する場合は先頭大文字を使用する必要があります。

[<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

解説

Unicode 文字列には明示的なエンコードを含めることができます。これは \u の後ろに 16 ビットの 16 進数コード (0000 - FFFF) を続けることで指定できます。あるいは UTF-32 エンコードを含めることができます。その場合、\U の後ろに、Unicode コード ポイントを表す 32 ビットの 16 進数コード (00000000 - 0010FFFF) を続けることで指定できます。

||| 以外のビットごとの演算子は使用できません。

その他のベースの整数

符号付き 32 ビット整数は、16 進数、8 進数、2 進数でも指定できます。それぞれ、プレフィックスとして 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_456_7890