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 veya 4.14f veya infinityf -infinityf |
Eğer | 0x00000000lf |
||
Float; Çift | 64 bit kayan nokta numarası | yok | 4.14 veya 2.3E+32 veya 2.3e+32 veya infinity -infinity |
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 x
y
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 0x
veya 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
Özel kayan nokta sonsuzluk değerleri
Hem hem single
de kayan float
nokta sayısal türleri pozitif ve negatif sonsuzluğu temsil eden özel değerlere sahiptir.
F# değeri | F# türü | Karşılık gelen .NET değeri |
---|---|---|
infinity veya +infinity |
float |
PositiveInfinity |
-infinity |
float |
NegativeInfinity |
infinityf veya +infinityf |
single |
PositiveInfinity |
-infinityf |
single |
NegativeInfinity |
Bu değerler doğrudan kullanılabilir veya kayan nokta sıfıra bölünürken döndürülür veya verilen türle temsil edilemeyecek kadar küçük bir sayıdır. Örnek:
> 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