Informazioni di riferimento su simboli e operatori
Questo articolo include tabelle che descrivono i simboli e gli operatori usati in F# e fornisce una breve descrizione di ognuno. Alcuni simboli e operatori hanno due o più voci quando vengono usati in più ruoli.
Commenti, direttive del compilatore e simboli di attributo
Nella tabella seguente vengono descritti i simboli correlati a commenti, direttive del compilatore e attributi.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
(*...*) |
Delimita un commento che potrebbe estendersi su più righe. | |
// |
Indica l'inizio di un commento a riga singola. | |
/// |
Documentazione XML | Indica un commento XML. |
# |
Direttive per il compilatore | Prefissi di una direttiva del preprocessore o del compilatore. |
[<...>] |
Attributes (Attributi) | Delimita un attributo. |
Simboli di stringa e identificatore
Nella tabella seguente vengono descritti i simboli correlati alle stringhe.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
" |
Stringhe | Delimita una stringa di testo. |
@" |
Stringhe | Avvia una stringa di testo verbatim, che può includere barre rovesciate e altri caratteri. |
""" |
Stringhe | Delimita una stringa di testo tra virgolette, che può includere barre rovesciate, virgolette doppie e altri caratteri. |
$" |
Stringhe interpolate | Avvia una stringa interpolata. |
' |
Valori letterali | Delimita un valore letterale a carattere singolo. |
``...`` |
Delimita un identificatore che altrimenti non sarebbe un identificatore valido, ad esempio una parola chiave del linguaggio. | |
\ |
Stringhe | Effettua l'escape del carattere successivo. Usato nei valori letterali di stringa e carattere. |
Operatori aritmetici
Nella tabella seguente vengono descritti gli operatori aritmetici.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
+ |
Operatori aritmetici |
|
- |
Operatori aritmetici |
|
* |
Operatori aritmetici Tuple Unità di misura |
|
/ |
Operatori aritmetici Unità di misura |
|
% |
Operatori aritmetici | Calcola il resto intero. |
** |
Operatori aritmetici | Calcola l'operazione di elevamento a potenza (x ** y indica x alla potenza di y ). |
Operatori di confronto
Nella tabella seguente vengono descritti gli operatori di confronto.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
< |
Operatori aritmetici | Calcola l'operazione "minore di". |
<> |
Operatori aritmetici | Restituisce true se il lato sinistro non è uguale a quello destro; in caso contrario, restituisce false. |
<= |
Operatori aritmetici | Restituisce true se il lato sinistro è minore o uguale al lato destro; altrimenti restituisce false . |
= |
Operatori aritmetici | Restituisce true se il lato sinistro è uguale al lato destro; in caso contrario, restituisce false . |
> |
Operatori aritmetici | Restituisce true se il lato sinistro è maggiore del lato destro; in caso contrario, restituisce false . |
>= |
Operatori aritmetici | Restituisce true se il lato sinistro è maggiore o uguale al lato destro; in caso contrario, restituisce false . |
Operatori booleani
Nella tabella seguente vengono descritti i simboli degli operatori aritmetici e booleani.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
&& |
Operatori booleani | Calcola l'operazione AND booleana. |
|| |
Operatori booleani | Calcola l'operazione OR booleana. |
Operatori bit per bit
Nella tabella seguente vengono descritti gli operatori bit per bit.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
&&& |
Operatori bit per bit | Calcola l'operazione AND bit per bit. |
<<< |
Operatori bit per bit | Sposta a sinistra i bit nella quantità sul lato sinistro indicata dal numero di bit specificato sul lato destro. |
>>> |
Operatori bit per bit | Sposta a destra i bit nella quantità sul lato sinistro indicata dal numero di posizioni specificato sul lato destro. |
^^^ |
Operatori bit per bit | Calcola l'operazione di OR esclusivo bit per bit. |
||| |
Operatori bit per bit | Calcola l'operazione OR bit per bit. |
~~~ |
Operatori bit per bit | Calcola l'operazione NOT bit per bit. |
Simboli e operatori di funzione
Nella tabella seguente vengono descritti gli operatori e i simboli correlati alle funzioni.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
-> |
Funzioni | Nelle espressioni di funzione, separa il criterio di input dall'espressione di output. |
|> |
Funzioni | Passa il risultato del lato sinistro alla funzione sul lato destro (operatore pipe diretto). |
||> |
( || Funzione )<'T1,'T2,'U> | Passa la tupla di due argomenti sul lato sinistro alla funzione sul lato destro. |
|||> |
( ||| Funzione )<'T1,'T2,'T3,'U> | Passa la tupla di tre argomenti sul lato sinistro alla funzione sul lato destro. |
>> |
Funzioni | Compone due funzioni (operatore di composizione diretto). |
<< |
Funzioni | Compone due funzioni in ordine inverso. La seconda viene eseguita per prima (operatore di composizione inverso). |
<| |
Funzioni | Passa il risultato dell'espressione sul lato destro alla funzione sul lato sinistro (operatore pipe inverso). |
<|| |
( || )<' Funzione T1,'T2,'U> | Passa la tupla di due argomenti sul lato destro alla funzione sul lato sinistro. |
<||| |
( ||| )<' Funzione T1,'T2,'T3,'U> | Passa la tupla di tre argomenti sul lato destro alla funzione sul lato sinistro. |
Simboli e operatori di tipo
Nella tabella seguente vengono descritti i simboli correlati alle annotazioni dei tipi e ai test dei tipi.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
-> |
Funzioni | Nei tipi di funzione, delimita gli argomenti e i valori restituiti, restituisce anche un risultato nelle espressioni di sequenza. |
: |
Funzioni | In un'annotazione di tipo, separa un nome di parametro o membro dal relativo tipo. |
:> |
Cast e conversioni | Converte un tipo in un tipo di livello superiore nella gerarchia. |
:? |
Espressioni match | Restituisce true se il valore corrisponde al tipo specificato (incluso se è un sottotipo); in caso contrario, restituisce false (operatore di test del tipo). |
:?> |
Cast e conversioni | Converte un tipo in un tipo di livello inferiore nella gerarchia. |
# |
Tipi flessibili | Se usato con un tipo, indica un tipo flessibile, che fa riferimento a un tipo o a uno dei relativi tipi derivati. |
' |
Generalizzazione automatica | Indica un parametro di tipo generico. |
<...> |
Generalizzazione automatica | Delimita i parametri di tipo. |
^ |
Parametri di tipo risolti staticamente Stringhe |
|
{} |
Classe o record | Se usato con la parola type chiave , delimita una classe o un record. Il tipo è una classe quando i membri vengono dichiarati o viene usata class la parola chiave . In caso contrario, si tratta di un record. |
{||} |
Record anonimo | Indica un record anonimo |
Simboli usati nelle espressioni di ricerca ed sezione dei membri
Nella tabella seguente vengono descritti i simboli aggiuntivi usati nelle espressioni di ricerca dei membri e di sezione.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
. |
Members | Accede a un membro e separa i singoli nomi in un nome completo. |
[...] o .[...] |
Matrici Proprietà indicizzate Espressioni di sezione |
Indicizza una matrice, una stringa o una raccolta o accetta una sezione di una raccolta. |
Simboli usati in tupla, elenco, matrice, espressioni di unità e modelli
La tabella seguente descrive i simboli correlati a tuple, elenchi, valori di unità e matrici.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
( ) |
Tipo di unità | Rappresenta il singolo valore del tipo di unità. |
, |
Tuple | Separa gli elementi di una tupla o parametri di tipo. |
:: |
Elenchi Espressioni match |
|
@ |
Elenchi | Concatena due elenchi. |
[...] |
Elenchi | Delimita gli elementi di un elenco. |
[|...|] |
Matrici | Delimita gli elementi di una matrice. |
Simboli usati nelle espressioni imperative
Nella tabella seguente vengono descritti i simboli aggiuntivi usati nelle espressioni.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
<- |
Valori | Assegna un valore a una variabile. |
; |
Sintassi dettagliata |
Separa le espressioni (usate soprattutto nella sintassi dettagliata). Separa anche gli elementi di un elenco o di campi di un record. |
Simboli aggiuntivi usati nelle sequenze e nelle espressioni di calcolo
La tabella seguente descrive i simboli aggiuntivi usati nelle sequenze e nelle espressioni di calcolo.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
-> |
Sequenze | Restituisce un'espressione (nelle espressioni di sequenza); equivale alle parole do yield chiave . |
! |
Espressioni di calcolo | Dopo una parola chiave, indica una versione modificata del comportamento della parola chiave come controllata da un'espressione di calcolo. |
Simboli aggiuntivi usati nei modelli di corrispondenza
La tabella seguente descrive i simboli correlati ai criteri di ricerca.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
-> |
Espressioni match | Usato nelle espressioni di corrispondenza. |
& |
Espressioni match |
|
_ |
Espressioni match Generics |
|
| |
Espressioni match | Delimita singoli case di corrispondenza, singoli case di unione discriminata e valori di enumerazione. |
Simboli aggiuntivi usati nelle dichiarazioni
Nella tabella seguente vengono descritti i simboli correlati alle dichiarazioni.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
(|...|) |
Criteri attivi | Delimita un nome di modello attivo. Chiamato anche banana clip. |
? |
Parametri e argomenti | Specifica un argomento facoltativo. |
~~ |
Overload degli operatori | Usato per dichiarare un overload per l'operatore di negazione unario. |
~- |
Overload degli operatori | Usato per dichiarare un overload per l'operatore meno unario. |
~+ |
Overload degli operatori | Usato per dichiarare un overload per l'operatore più unario. |
Simboli aggiuntivi usati nelle virgolette
Nella tabella seguente vengono descritti i simboli correlati alle virgolette di codice.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
<@...@> |
Citazioni di codice | Delimita una citazione di codice tipizzato. |
<@@...@@> |
Citazioni di codice | Delimita una citazione di codice non tipizzato. |
% |
Citazioni di codice | Usato per lo splicing delle espressioni in citazioni di codice tipizzato. |
%% |
Citazioni di codice | Usato per lo splicing delle espressioni in citazioni di codice non tipizzato. |
Operatori di ricerca dinamica
Nella tabella seguente vengono descritti i simboli aggiuntivi usati nelle espressioni di ricerca dinamica. Non vengono in genere usati nella programmazione F# di routine e non vengono fornite implementazioni di questi operatori nella libreria di base F#.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
? |
Usato come operatore per le chiamate di metodo e proprietà dinamiche. | |
? ... <- ... |
Usato come operatore per l'impostazione delle proprietà dinamiche. |
Operatori nullable nelle query
Gli operatori nullable vengono definiti per l'uso nelle espressioni di query. Nella tabella seguente vengono illustrati questi operatori.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
%? |
Operatori nullable | Calcola il resto intero, quando il lato destro è un tipo nullable. |
*? |
Operatori nullable | Moltiplica il lato sinistro e destro, quando il lato destro è un tipo nullable. |
+? |
Operatori nullable | Addiziona il lato sinistro e destro, quando il lato destro è un tipo nullable. |
-? |
Operatori nullable | Sottrae il lato destro dal lato sinistro, quando la parte destra è un tipo nullable. |
/? |
Operatori nullable | Divide il lato sinistro dal lato destro, quando il lato destro è un tipo nullable. |
<? |
Operatori nullable | Calcola l'operazione "minore di", quando la parte destra è un tipo nullable. |
<>? |
Operatori nullable | Calcola l'operazione "diverso da" quando la parte destra è un tipo nullable. |
<=? |
Operatori nullable | Calcola l'operazione "minore o uguale a" quando la parte destra è un tipo nullable. |
=? |
Operatori nullable | Calcola l'operazione "uguale a" quando la parte destra è un tipo nullable. |
>? |
Operatori nullable | Calcola l'operazione "maggiore di" quando il lato destro è un tipo nullable. |
>=? |
Operatori nullable | Calcola l'operazione "maggiore o uguale a" quando la parte destra è un tipo nullable. |
?>= , ?> , ?<= , ?< , ?= , ?<> , ?+ , ?- , ?* , ?/ |
Operatori nullable | Equivalente per i corrispondenti operatori senza il prefisso ?, per cui un tipo nullable è a sinistra. |
>=? , >? , <=? , <? , =? , <>? , +? , -? , *? , /? |
Operatori nullable | Equivalente per i corrispondenti operatori senza il suffisso ?, per cui un tipo nullable è a destra. |
?>=? , ?>? , ?<=? , ?<? , ?=? , ?<>? , ?+? , ?-? , ?*? , ?/? |
Operatori nullable | Equivalente per i corrispondenti operatori non racchiusi da punti interrogativi, dove entrambi i lati sono tipi nullable. |
Operatori di cella di riferimento (deprecati)
Nella tabella seguente vengono descritti i simboli correlati alle celle di riferimento. L'uso di questi operatori genera messaggi di avviso a livello di F# 6. Per altre informazioni, vedere Messaggi di consulenza sulle operazioni sulle celle di riferimento.
Simbolo o operatore | Collegamenti | Descrizione |
---|---|---|
! |
Celle di riferimento | Dereferenzia una cella di riferimento. |
:= |
Celle di riferimento | Assegna un valore a una cella di riferimento. |
Precedenza tra gli operatori
La tabella seguente illustra l'ordine di precedenza degli operatori e di altre parole chiave di espressione in F#, in ordine dalla precedenza più bassa alla precedenza più alta. È anche elencata l'associatività, se applicabile.
Operatore | Associatività |
---|---|
as |
Destra |
when |
Destra |
| (pipe) |
Sinistra |
; |
Destra |
let |
Non associativo |
function , fun , match , try |
Non associativo |
if |
Non associativo |
not |
Destra |
-> |
Destra |
:= |
Destra |
, |
Non associativo |
or , || |
Sinistra |
& , && |
Sinistra |
:> , :?> |
Destra |
< < , > > , = , | = , & | , & , $ (inclusi <<< , >>> , ||| , &&& ) |
Sinistra |
^ ^ (incluso ^^^ ) |
Destra |
:: |
Destra |
:? |
Non associativa |
- - , + + |
Si applica agli usi infissi di questi simboli |
* * , / / , % % |
Sinistra |
** ** |
Destra |
f x (applicazione di funzione)(incluso lazy x , assert x ) |
Sinistra |
| (corrispondenza con il modello) |
Destra |
operatori di prefisso (+ + , - - , % , %% , & , && , ! % , ~ %% ) |
Sinistra |
. |
Sinistra |
f(x) |
Sinistra |
f< f< > |
Sinistra |
F# supporta l'overload degli operatori personalizzati. Ciò significa che è possibile definire operatori personalizzati. Nella tabella precedente, op può essere qualsiasi sequenza valida (possibilmente vuota) di caratteri dell'operatore, predefinita o definita dall'utente. In questo modo, è possibile usare questa tabella per determinare la sequenza di caratteri da usare in modo che un operatore personalizzato raggiunga il livello di priorità desiderato. I caratteri .
iniziali vengono ignorati quando il compilatore determina la precedenza.