Bagikan melalui


Harfiah

Artikel ini menyediakan tabel yang menunjukkan cara menentukan jenis harfiah dalam F#.

Jenis harfiah

Tabel berikut ini menunjukkan jenis harfiah dalam F#. Karakter yang mewakili digit dalam notasi heksadesimal tidak peka huruf besar/kecil; karakter yang mengidentifikasi jenisnya peka huruf besar/kecil.

Tipe Deskripsi Akhiran atau awalan Contoh
sbyte bilangan bulat 8-bit yang ditandatangani y 86y

0b00000101y
byte angka alami 8-bit yang tanpa tanda tangan uy 86uy

0b00000101uy
int16 bilangan bulat 16-bit yang ditandatangani s 86s
uint16 angka alami 16-bit tanpa tanda tangan us 86us
int

int32
bilangan bulat 32-bit yang ditandatangani l atau none 86

86l
uint

uint32
angka alami 32-bit tanpa tanda tangan u atau ul 86u

86ul
nativeint penunjuk asli ke angka alami yang ditandatangani n 123n
unativeint penunjuk asli sebagai angka alami tanpa tanda tangan un 0x00002D3Fun
int64 bilangan bulat 64-bit yang ditandatangani L 86L
uint64 angka alami 64-bit tanpa tanda tangan UL 86UL
single, float32 angka titik mengambang 32-bit F atau f 4.14Fatau 4.14f atau atau infinityf-infinityf
Lf 0x00000000lf
float; double angka titik mengambang 64-bit tidak ada 4.14atau 2.3E+32 atau atau 2.3e+32 atau infinity-infinity
LF 0x0000000000000000LF
bigint bilangan bulat tidak terbatas pada representasi 64-bit I 9999999999999999999999999999I
desimal angka pecahan yang dinyatakan sebagai titik tetap atau angka rasional M atau m 0.7833M atau 0.7833m
Char Karakter Unicode tidak ada 'a' atau '\u0061'
String String Unicode tidak ada "text\n"

or

@"c:\filename"

or

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

or

"string1" + "string2"

Lihat juga String.
byte Karakter ASCII B 'a'B
byte[] String ASCII B "text"B
String atau byte[] string verbatim @ prefiks @"\\server\share" (Unicode)

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

Harfiah bernama

Nilai yang dimaksudkan untuk menjadi konstanta dapat ditandai dengan atribut Harfiah.

Atribut ini memiliki efek menyebabkan nilai dikompilasi sebagai konstanta. Dalam contoh berikut, baik x dan y di bawah ini adalah nilai yang tidak dapat diubah, tetapi x dievaluasi pada run-time, sedangkan y merupakan konstanta waktu kompilasi.

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

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

Misalnya, perbedaan ini penting saat memanggil fungsi eksternal, karena DllImport merupakan atribut yang perlu mengetahui nilai myDLL selama kompilasi. [<Literal>] Tanpa deklarasi, kode ini akan gagal dikompilasi:

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

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

Dalam ekspresi pencocokan pola, pengidentifikasi yang dimulai dengan karakter huruf kecil selalu diperlakukan sebagai variabel yang akan diikat, bukan sebagai harfiah, jadi Anda umumnya harus menggunakan awal kapital saat Anda menentukan harfiah.

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

Keterangan

Harfiah bernama berguna untuk:

  • Pencocokan pola tanpa klausul when.
  • Argumen atribut.
  • Argumen penyedia jenis statik.

String Unicode dapat berisi pengodean eksplisit yang dapat Anda tentukan dengan menggunakan \u diikuti dengan kode heksadesimal 16-bit (0000 - FFFF), atau pengodean UTF-32 yang dapat Anda tentukan dengan menggunakan \U diikuti oleh kode heksadesimal 32-bit yang mewakili titik kode Unicode apa pun (00000000 - 0010FFFF).

Penggunaan operator bitwise selain ||| tidak diizinkan.

Bilangan bulat di basis lain

Bilangan bulat 32-bit yang ditandatangani juga dapat ditentukan dalam heksadesimal, oktal, atau biner menggunakan awalan masing-masing 0x, 0o, atau 0b.

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

Garis bawah di dalam harfiah numerik

Anda dapat memisahkan digit dengan karakter garis bawah (_).

let value = 0xDEAD_BEEF

let valueAsBits = 0b1101_1110_1010_1101_1011_1110_1110_1111

let exampleSSN = 123_45_6789

Nilai tak terbatas titik mengambang khusus

float Jenis numerik titik mengambang dan single memiliki nilai khusus terkait yang mewakili infinitas positif dan negatif.

Nilai F# Jenis F# Nilai .NET yang sesuai
infinity atau +infinity float PositiveInfinity
-infinity float NegativeInfinity
infinityf atau +infinityf single PositiveInfinity
-infinityf single NegativeInfinity

Nilai-nilai ini dapat digunakan secara langsung atau dikembalikan saat dibagi dengan nol floating-point atau angka yang terlalu kecil untuk diwakili oleh jenis yang diberikan. Contohnya:

> 1.0/0.0;;
val it: float = infinity

> 1.0/(-0.0);;
val it: float = -infinity

> 1.0/0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
;;
val it: float = infinity