Condividi tramite


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 di essi. Alcuni simboli e operatori hanno due o più voci quando vengono usate in più ruoli.

Simboli di commento, direttiva del compilatore e attributi

Nella tabella seguente vengono descritti i simboli correlati a commenti, direttive e attributi del compilatore.

Simbolo o operatore Collegamenti Descrizione
(*...*) Delimita un commento che può estendersi su più righe.
// Indica l'inizio di un commento a riga singola.
/// Documentazione XML Indica un commento XML.
# Direttive del compilatore Prefissi una direttiva del preprocessore o del compilatore.
[<...>] 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 rovesciata e altri caratteri.
""" Stringhe Delimita una stringa di testo con virgolette triple, 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 legale, ad esempio una parola chiave del linguaggio.
\ Stringhe Escape del carattere successivo; usato nei valori letterali carattere e stringa.

Operatori aritmetici

Nella tabella seguente vengono descritti gli operatori aritmetici.

Simbolo o operatore Collegamenti Descrizione
+ Operatori aritmetici
  • Se utilizzato come operatore binario, aggiunge i lati sinistro e destro.
  • Se usato come operatore unario, indica una quantità positiva. (Formalmente, produce lo stesso valore con il segno invariato.
- Operatori aritmetici
  • Se usato come operatore binario, sottrae il lato destro dal lato sinistro.
  • Se utilizzato come operatore unario, esegue un'operazione di negazione.
* Operatori aritmetici

Tuple

Unità di misura
  • Se 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 exponentiation (x ** y indica x la 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 al lato destro; in caso contrario, restituisce false.
<= Operatori aritmetici Restituisce true se il lato sinistro è minore o uguale al lato destro; in caso contrario, 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 i bit nella quantità sul lato sinistro a sinistra in base al numero di bit specificati sul lato destro.
>>> operatori bit per bit Sposta i bit nella quantità sul lato sinistro a destra in base al numero di posizioni specificate sul lato destro.
^^^ operatori bit per bit Calcola l'operazione 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 modello di input dall'espressione di output.
|> Funzioni Passa il risultato del lato sinistro alla funzione sul lato destro (operatore pipe in avanti).
||> ( ||> )<'T1,'T2,'U> Funzione Passa la tupla di due argomenti a sinistra alla funzione sul lato destro.
|||> ( |||> )<'T1,'T2,'T3,'U> Funzione Passa la tupla di tre argomenti a sinistra alla funzione sul lato destro.
>> Funzioni Compone due funzioni (operatore di composizione in avanti).
<< Funzioni Compone due funzioni in ordine inverso; il secondo viene eseguito per primo (operatore di composizione all'indietro).
<| Funzioni Passa il risultato dell'espressione sul lato destro alla funzione sul lato sinistro (operatore pipe indietro).
<|| ( <|| )<' T1,'T2,'U> Funzione Passa la tupla di due argomenti sul lato destro alla funzione sul lato sinistro.
<||| ( <||| )<' T1,'T2,'T3,'U> Funzione 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 di tipo e ai test di tipo.

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 parametro o un nome membro dal relativo tipo.
:> Cast e conversioni Converte un tipo in un tipo superiore nella gerarchia.
:? espressioni di corrispondenza Restituisce se il valore corrisponde al tipo specificato ,incluso se è un sottotipo; in caso contrario, restituisce truefalse (operatore test di tipo).
:?> Cast e conversioni Converte un tipo in un tipo 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 in modo statico

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 utilizzata con la type parola chiave , delimita una classe o un record. Il tipo è una classe quando i membri vengono dichiarati o viene usata la class parola chiave . In caso contrario, è un record.
{||} Record anonimo Indica un record anonimo

Simboli usati nelle espressioni di ricerca e sezione dei membri

Nella tabella seguente vengono descritti i simboli aggiuntivi utilizzati nelle espressioni di ricerca e sezione dei membri.

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
Indici in una matrice, una stringa o una raccolta oppure accetta una sezione di una raccolta.

Simboli usati in tupla, elenco, matrice, espressioni di unità e modelli

Nella tabella seguente vengono descritti 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.
:: Liste

espressioni di corrispondenza
  • Crea un elenco. L'elemento a sinistra viene anteporto all'elenco a destra.
  • Utilizzato nei criteri di ricerca per separare le parti di un elenco.
@ Liste Concatena due elenchi.
[...] Liste 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 utilizzati nelle espressioni.

Simbolo o operatore Collegamenti Descrizione
<- Valori Assegna un valore a una variabile.
; Sintassi dettagliata

Separa le espressioni (usate principalmente nella sintassi dettagliata). Separa inoltre gli elementi di un elenco o di campi di un record.

Simboli aggiuntivi usati nelle sequenze e nelle espressioni di calcolo

Nella tabella seguente vengono descritti i simboli aggiuntivi usati nelle sequenze e nelle espressioni di calcolo.

Simbolo o operatore Collegamenti Descrizione
-> Sequenze Restituisce un'espressione (nelle espressioni di sequenza); equivalente alle do yield parole 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

Nella tabella seguente vengono descritti i simboli correlati ai criteri di ricerca.

Simbolo o operatore Collegamenti Descrizione
-> espressioni di corrispondenza Utilizzato nelle espressioni di corrispondenza.
& Abbinamento di Modelli
  • Calcola l'indirizzo di un valore modificabile, da usare per l'interoperabilità con altri linguaggi.
  • Usato nei modelli AND.
_ espressioni di corrispondenza

Generics
  • Indica un criterio con caratteri jolly.
  • Specifica un parametro generico anonimo.
| espressioni di corrispondenza Delimita i singoli case di corrispondenza, i singoli casi di unione discriminati e i valori di enumerazione.

Simboli aggiuntivi usati nelle dichiarazioni

Nella tabella seguente vengono descritti i simboli correlati alle dichiarazioni.

Simbolo o operatore Collegamenti Descrizione
(|...|) Modelli Attivi Delimita un nome di criterio attivo. Chiamata anche clip banana.
? Parametri e argomenti Specifica un argomento facoltativo.
~~ Sovraccarico degli operatori Utilizzato per dichiarare un overload per l'operatore di negazione unario.
~- Sovraccarico degli operatori Utilizzato per dichiarare un overload per l'operatore meno unario.
~+ Sovraccarico degli operatori Usato per dichiarare un overload per l'operatore più unario.

Simboli aggiuntivi usati tra virgolette

Nella tabella seguente vengono descritti i simboli correlati alle virgolette di codice.

Simbolo o operatore Collegamenti Descrizione
<@...@> Virgolette di codice Delimita una virgoletta di codice tipizzata.
<@@...@@> Virgolette di codice Delimita un'offerta di codice non tipizzato.
% Virgolette di codice Utilizzato per lo splicing delle espressioni in virgolette di codice tipizzato.
%% Virgolette di codice Utilizzato per lo splicing delle espressioni in virgolette di codice non tipizzato.

Operatori di ricerca dinamici

Nella tabella seguente vengono descritti i simboli aggiuntivi usati nelle espressioni di ricerca dinamica. In genere non vengono usate nella programmazione F# di routine e non vengono fornite implementazioni di questi operatori nella libreria principale F#.

Simbolo o operatore Collegamenti Descrizione
? Usato come operatore per le chiamate di metodo e proprietà dinamiche.
? ... <- ... Usato come operatore per impostare le proprietà dinamiche.

Operatori nullable nelle query

Gli operatori nullable sono definiti per l'uso nelle espressioni di query. La tabella seguente illustra questi operatori.

Simbolo o operatore Collegamenti Descrizione
%? Operatori nullable Calcola il resto intero, quando il lato destro è un tipo nullable.
*? Operatori nullable Moltiplica i lati sinistro e destro, quando il lato destro è un tipo nullable.
+? Operatori nullable Aggiunge i lati sinistro e destro, quando il lato destro è un tipo nullable.
-? Operatori nullable Sottrae il lato destro dal lato sinistro, quando il lato destro è un tipo nullable.
/? Operatori nullable Divide il lato sinistro a destra, quando il lato destro è un tipo nullable.
<? Operatori nullable Calcola l'operazione minore di , quando il lato destro è un tipo nullable.
<>? Operatori nullable Calcola l'operazione "non uguale" quando il lato destro è un tipo nullable.
<=? Operatori nullable Calcola l'operazione "minore o uguale a" quando il lato destro è un tipo nullable.
=? Operatori nullable Calcola l'operazione "uguale" quando il lato destro è 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 il lato destro è un tipo nullable.
?>= ?<=, ?>, , ?<, ?=?<>, ?+, ?-, , ?*?/ Operatori nullable Equivalente agli operatori corrispondenti senza l'oggetto ? prefisso, dove un tipo nullable si trova a sinistra.
>=? <=?, >?, , <?, =?<>?, +?, -?, , *?/? Operatori nullable Equivalente agli operatori corrispondenti senza l'oggetto ? suffisso, dove un tipo nullable si trova a destra.
?>=? ?<=?, ?>?, , ?<?, ?=??<>?, ?+?, ?-?, , ?*??/? Operatori nullable Equivalente agli operatori corrispondenti senza i punti interrogativi circostanti, in cui 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 partire da F# 6. Per altre informazioni, vedere Riferimenti ai messaggi di consulenza sulle operazioni di cella.

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 dell'operatore

Nella tabella seguente viene illustrato l'ordine di precedenza degli operatori e 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 Giusto
when Giusto
| (pipe) Sinistra
; Giusto
let Nonassociative
function, fun, matchtry Nonassociative
if Nonassociative
not Giusto
-> Giusto
:= Giusto
, Nonassociative
or, || Sinistra
&, && Sinistra
:>, :?> Giusto
< op, >op, =|op, op, && , ,$

(incluso <<<, >>>|||, , &&&)
Sinistra
^ Op

(incluso ^^^)
Giusto
:: Giusto
:? Non associativo
- op, +op Si applica agli utilizzi infissi di questi simboli
* op, /op, %op Sinistra
** Op Giusto
f x (applicazione per le funzioni)

(incluso lazy x, assert x)
Sinistra
| (corrispondenza dei criteri) Giusto
operatori di prefisso (+op, -op, %, %%, &, &&!op, ~op) Sinistra
. Sinistra
f(x) Sinistra
f< Tipi> Sinistra

F# supporta l'overload degli operatori personalizzati. Ciò significa che è possibile definire gli operatori personalizzati. Nella tabella precedente , op può essere qualsiasi sequenza valida (possibilmente vuota) di caratteri operatore, predefinita o definita dall'utente. È quindi possibile usare questa tabella per determinare quale sequenza di caratteri utilizzare per un operatore personalizzato per ottenere il livello di precedenza desiderato. I caratteri iniziali . vengono ignorati quando il compilatore determina la precedenza.

Vedere anche