Letterali
Questo articolo fornisce una tabella che illustra come specificare il tipo di un valore letterale in F#.
Tipi letterali
La tabella seguente illustra i tipi letterali in F#. I caratteri che rappresentano cifre nella notazione esadecimale non fanno distinzione tra maiuscole e minuscole; caratteri che identificano il tipo fanno distinzione tra maiuscole e minuscole.
Tipo | Descrizione | Suffisso o prefisso | Esempi |
---|---|---|---|
sbyte | intero con segno a 8 bit | y | 86y 0b00000101y |
byte | numero naturale senza segno a 8 bit | Uy | 86uy 0b00000101uy |
int16 | intero con segno a 16 bit | s | 86s |
uint16 | numero naturale senza segno a 16 bit | us | 86us |
int int32 |
intero con segno a 32 bit | l o nessuno | 86 86l |
uint uint32 |
numero naturale senza segno a 32 bit | u o ul | 86u 86ul |
nativeint | puntatore nativo a un numero naturale con segno | n | 123n |
unativeint | puntatore nativo come numero naturale senza segno | un | 0x00002D3Fun |
int64 | intero con segno a 64 bit | L | 86L |
uint64 | numero naturale senza segno a 64 bit | UL | 86UL |
single, float32 | Numero a virgola mobile a 32 bit | F o f | 4.14F oppure 4.14f |
Se | 0x00000000lf |
||
Galleggiante; Doppia | Numero a virgola mobile a 64 bit | Nessuno | 4.14 o 2.3E+32 o 2.3e+32 |
LF | 0x0000000000000000LF |
||
bigint | Integer non limitato alla rappresentazione a 64 bit | I | 9999999999999999999999999999I |
decimale | numero frazionaria rappresentato come un punto fisso o un numero razionale | M o m | 0.7833M oppure 0.7833m |
Char | Carattere Unicode | Nessuno | 'a' oppure '\u0061' |
String | Stringa Unicode | Nessuno | "text\n" or @"c:\filename" or """<book title="Paradise Lost">""" or "string1" + "string2" Vedere anche Stringhe. |
byte | Carattere ASCII | G | 'a'B |
byte[] | Stringa ASCII | G | "text"B |
Stringa o byte[] | stringa verbatim | Prefisso @ | @"\\server\share" (Unicode)@"\\server\share"B (ASCII) |
Valori letterali denominati
I valori destinati a essere costanti possono essere contrassegnati con l'attributo Literal .
Questo attributo ha l'effetto di causare la compilazione di un valore come costante. Nell'esempio seguente, sia che x
y
di seguito sono valori non modificabili, ma x
vengono valutati in fase di esecuzione, mentre y
è una costante in fase di compilazione.
let x = "a" + "b" // evaluated at run-time
[<Literal>]
let y = "a" + "b" // evaluated at compile-time
Ad esempio, questa distinzione è importante quando si chiama una funzione esterna, perché DllImport
è un attributo che deve conoscere il valore di myDLL
durante la compilazione. Senza la [<Literal>]
dichiarazione, il codice non verrà compilato:
[<Literal>]
let myDLL = "foo.dll"
[<DllImport(myDLL, CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()
Nelle espressioni di corrispondenza dei criteri di ricerca gli identificatori che iniziano con caratteri minuscoli vengono sempre considerati variabili da associare, anziché come valori letterali, pertanto è consigliabile usare in genere maiuscole iniziali quando si definiscono valori letterali.
[<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
Osservazioni:
I valori letterali denominati sono utili per:
- Criteri di ricerca senza clausola
when
. - Argomenti dell'attributo.
- Argomenti del provider di tipi statici.
Le stringhe Unicode possono contenere codifiche esplicite che è possibile specificare usando \u
seguito da un codice esadecimale a 16 bit (0000 - FFFF) o da codifiche UTF-32 che è possibile specificare usando \U
seguito da un codice esadecimale a 32 bit che rappresenta qualsiasi punto di codice Unicode (00000000 - 0010FFFF).
L'uso di operatori bit per bit diversi da |||
non è consentito.
Numeri interi in altre basi
I numeri interi con segno a 32 bit possono anche essere specificati rispettivamente in formato esadecimale, ottale o binario usando un 0x
prefisso , 0o
o 0b
.
let numbers = (0x9F, 0o77, 0b1010)
// Result: numbers : int * int * int = (159, 63, 10)
Caratteri di sottolineatura nei valori letterali numerici
È possibile separare le cifre con il carattere di sottolineatura (_
).
let value = 0xDEAD_BEEF
let valueAsBits = 0b1101_1110_1010_1101_1011_1110_1110_1111
let exampleSSN = 123_45_6789
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per