Değişmez Değerler

Bu makalede, F# dilinde değişmez değer türünün nasıl belirtileceğini gösteren bir tablo sağlanır.

Değişmez değer türleri

Aşağıdaki tabloda F# dilindeki değişmez değer türleri gösterilmektedir. Onaltılık gösteriminde basamakları temsil eden karakterler büyük/küçük harfe duyarlı değildir; türü tanımlayan karakterler büyük/küçük harfe duyarlıdır.

Type Açıklama Son ek veya ön ek Örnekler
sbyte imzalı 8 bit tamsayı y 86y

0b00000101y
byte işaretsiz 8 bit doğal sayı Uslu 86uy

0b00000101uy
int16 imzalı 16 bit tamsayı s 86s
uint16 işaretsiz 16 bit doğal sayı us 86us
int

int32
imzalı 32 bit tamsayı l veya hiçbiri 86

86l
uint

uint32
işaretsiz 32 bit doğal sayı u veya ul 86u

86ul
Nativeint imzalı bir doğal sayıya yerel işaretçi n 123n
Unativeint işaretsiz doğal sayı olarak yerel işaretçi un 0x00002D3Fun
int64 imzalı 64 bit tamsayı L 86L
uint64 işaretsiz 64 bit doğal sayı UL 86UL
tek, float32 32 bit kayan nokta numarası F veya f 4.14F veya 4.14f
Eğer 0x00000000lf
Float; Çift 64 bit kayan nokta numarası yok 4.14veya veya 2.3E+322.3e+32
LF 0x0000000000000000LF
bigint 64 bit gösterimle sınırlı olmayan tamsayı I 9999999999999999999999999999I
ondalık sabit nokta veya rasyonel sayı olarak temsil edilen kesirli sayı M veya m 0.7833M veya 0.7833m
Char Unicode karakter yok 'a' veya '\u0061'
String Unicode dizesi yok "text\n"

veya

@"c:\filename"

veya

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

veya

"string1" + "string2"

Ayrıca bkz. Dizeler.
byte ASCII karakteri K 'a'B
bayt[] ASCII dizesi K "text"B
Dize veya bayt[] düz metin dizesi @ ön eki @"\\server\share" (Unicode)

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

Adlandırılmış değişmez değerler

Sabit olması amaçlanan değerler Değişmez Değer özniteliğiyle işaretlenebilir.

Bu öznitelik, bir değerin sabit olarak derlenmiş olmasına neden olma etkisine sahiptir. Aşağıdaki örnekte, hem hem de xy aşağıda sabit değerler vardır, ancak x çalışma zamanında değerlendirilirken y , derleme zamanı sabitidir.

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

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

Örneğin, derleme sırasında değerini myDLL bilmesi gereken bir öznitelik olduğundanDllImport, bu ayrım bir dış işlevi çağırırken önemlidir. [<Literal>] Bildirim olmadan bu kod derlenemiyor:

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

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

Desen eşleştirme ifadelerinde, küçük harfle başlayan tanımlayıcılar her zaman değişmez değer yerine bağlanacak değişkenler olarak kabul edilir, bu nedenle değişmez değerleri tanımlarken genellikle ilk büyük harfleri kullanmanız gerekir.

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

Açıklamalar

Adlandırılmış değişmez değerler şunlar için kullanışlıdır:

  • Yan tümcesi when olmadan desen eşleştirme.
  • Öznitelik bağımsız değişkenleri.
  • Statik tür sağlayıcısı bağımsız değişkenleri.

Unicode dizeleri, 16 bit onaltılık kod (0000 - FFFF) veya UTF-32 kodlamaları kullanarak belirtebileceğiniz ve ardından herhangi bir Unicode kod noktasını temsil eden 32 bit onaltılık kod (00000000 - 0010FFFF) kullanarak \u\U belirtebileceğiniz açık kodlamalar içerebilir.

dışındaki ||| bit düzeyinde işleçlerin kullanılmasına izin verilmez.

Diğer tabanlardaki tamsayılar

İmzalı 32 bit tamsayılar sırasıyla bir 0xveya 0o ön ek kullanılarak onaltılık, sekizli veya 0b ikili olarak da belirtilebilir.

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

Sayısal değişmez değerlerde alt çizgi

Basamakları alt çizgi karakteriyle (_ ) ayırabilirsiniz.

let value = 0xDEAD_BEEF

let valueAsBits = 0b1101_1110_1010_1101_1011_1110_1110_1111

let exampleSSN = 123_45_6789