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
  • Quando usato come operatore binario, aggiunge i lati sinistro e destro.
  • Quando usato come operatore unario, indica una quantità positiva (formalmente, produce lo stesso valore con segno non modificato.)
- Operatori aritmetici
  • Quando usato come operatore binario, sottrae il lato destro dal lato sinistro.
  • Quando usato come operatore unario, esegue un'operazione di negazione.
* Operatori aritmetici

Tuple

Unità di misura
  • Quando viene usato come operatore binario, moltiplica i lati sinistro e destro.
  • Nei tipi, indica l'associazione in una tupla.
  • Usato in unità di tipi di misura.
/ Operatori aritmetici

Unità di misura
  • Divide il lato sinistro (numeratore) per il lato destro (denominatore).
  • Usato in unità di tipi 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
  • Specifica i parametri di tipo che devono essere risolti in fase di compilazione, non in fase di esecuzione.
  • Concatena le 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
  • Crea un elenco. L'elemento sul lato sinistro viene aggiunto all'elenco sul lato destro.
  • Usato nella corrispondenza tra modelli per separare le parti di un elenco.
@ 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
  • Calcola l'indirizzo di un valore modificabile, da usare quando si interagisce con altri linguaggi.
  • Usato nei modelli AND.
_ Espressioni match

Generics
  • Indica un modello di carattere jolly.
  • Specifica un parametro generico anonimo.
| 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.

Vedi anche