Symbol- och operatorreferens

Den här artikeln innehåller tabeller som beskriver de symboler och operatorer som används i F# och innehåller en kort beskrivning av var och en. Vissa symboler och operatorer har två eller flera poster när de används i flera roller.

Kommentarer, kompilatordirektiv och attributsymboler

I följande tabell beskrivs symboler relaterade till kommentarer, kompilatordirektiv och attribut.

Symbol eller operator Länkar Description
(*...*) Avgränsar en kommentar som kan sträcka sig över flera rader.
// Anger början på en kommentar med en rad.
/// XML-dokumentation Anger en XML-kommentar.
# Kompilatordirektiv Prefixar ett preprocessor- eller kompilatordirektiv.
[<...>] Attribut Avgränsar ett attribut.

Sträng- och identifierarsymboler

I följande tabell beskrivs symboler relaterade till strängar.

Symbol eller operator Länkar Description
" Strängar Avgränsar en textsträng.
@" Strängar Startar en ordagrann textsträng, som kan innehålla omvänt snedstreck och andra tecken.
""" Strängar Avgränsar en trippelciterad textsträng, som kan innehålla omvänt snedstreck, dubbla citattecken och andra tecken.
$" Interpolerade strängar Startar en interpolerad sträng.
' Literaler Avgränsar en literal med ett tecken.
``...`` Avgränsar en identifierare som annars inte skulle vara en juridisk identifierare, till exempel ett språknyckelord.
\ Strängar Undflyr nästa tecken. används i tecken- och strängliteraler.

Aritmetiska operatorer

I följande tabell beskrivs de aritmetiska operatorerna.

Symbol eller operator Länkar Description
+ Aritmetiska operatorer
  • När den används som binär operator lägger till vänster och höger sida.
  • När den används som en unary-operator anger en positiv kvantitet. (Formellt genererar det samma värde med tecknet oförändrat.)
- Aritmetiska operatorer
  • När den används som binär operator subtraherar den högra sidan från vänster sida.
  • När den används som en unary-operator utför en negationsåtgärd.
* Aritmetiska operatorer

Tupplar

Måttenheter
  • När den används som binär operator multipliceras vänster och höger sida.
  • I typer anger parkoppling i en tuppeln.
  • Används i måttenheter.
/ Aritmetiska operatorer

Måttenheter
  • Delar vänster sida (täljare) med höger sida (nämnare).
  • Används i måttenheter.
% Aritmetiska operatorer Beräknar heltalsresterna.
** Aritmetiska operatorer Beräknar exponentiationsåtgärden (x ** y innebär x till kraften i y).

Jämförelseoperatorer

I följande tabell beskrivs jämförelseoperatorerna.

Symbol eller operator Länkar Description
< Aritmetiska operatorer Beräknar mindre än åtgärden.
<> Aritmetiska operatorer Returnerar true om den vänstra sidan inte är lika med höger sida. Annars returneras falskt.
<= Aritmetiska operatorer Returnerar true om den vänstra sidan är mindre än eller lika med den högra sidan. Annars returneras false.
= Aritmetiska operatorer Returnerar true om den vänstra sidan är lika med den högra sidan. Annars returneras false.
> Aritmetiska operatorer Returnerar true om den vänstra sidan är större än höger sida. Annars returneras false.
>= Aritmetiska operatorer Returnerar true om den vänstra sidan är större än eller lika med höger sida. Annars returneras false.

Booleska operatorer

I följande tabell beskrivs symbolerna för aritmetiska och booleska operatorer.

Symbol eller operator Länkar Description
&& Booleska operatorer Beräknar den booleska AND-åtgärden.
|| Booleska operatorer Beräknar den booleska OR-åtgärden.

Bitvisa operatorer

I följande tabell beskrivs bitvis operatorer.

Symbol eller operator Länkar Description
&&& Bitvisoperatorer Beräknar bitvis AND-åtgärden.
<<< Bitvisoperatorer Flyttar bitar i kvantiteten till vänster med det antal bitar som anges på höger sida.
>>> Bitvisoperatorer Flyttar bitar i kvantiteten på vänster sida till höger med det antal platser som anges på höger sida.
^^^ Bitvisoperatorer Beräknar den bitvis exklusiva OR-åtgärden.
||| Bitvisoperatorer Beräknar bitvis OR-åtgärden.
~~~ Bitvisoperatorer Beräknar bitvis NOT-åtgärden.

Funktionssymboler och operatorer

I följande tabell beskrivs operatorer och symboler som är relaterade till funktioner.

Symbol eller operator Länkar Description
-> Funktioner I funktionsuttryck separerar indatamönstret från utdatauttrycket.
|> Funktioner Skickar resultatet från vänster sida till funktionen på höger sida (framåtrörsoperator).
||> ( ||> )<'T1,'T2'U> Function Skickar tuppeln med två argument till vänster till funktionen till höger.
|||> ( |||> )<'T1,'T2,'T3'U> Function Skickar tuppeln med tre argument till vänster till funktionen till höger.
>> Funktioner Skapar två funktioner (framåtkompositionsoperator).
<< Funktioner Skapar två funktioner i omvänd ordning; den andra körs först (bakåtkompositionsoperator).
<| Funktioner Skickar resultatet av uttrycket på höger sida till funktionen på vänster sida (bakåtrörsoperator).
<|| ( <|| )<' T1,'T2'U-funktion> Skickar tuppeln med två argument på höger sida till funktionen till vänster.
<||| ( <||| )<' T1,'T2,'T3'U> Function Skickar tuppeln med tre argument på höger sida till funktionen till vänster.

Skriv symboler och operatorer

I följande tabell beskrivs symboler relaterade till typanteckning och typtester.

Symbol eller operator Länkar Description
-> Funktioner I funktionstyper avgränsar argument och returvärden också ett resultat i sekvensuttryck.
: Funktioner I en typanteckning separerar en parameter eller ett medlemsnamn från dess typ.
:> Gjutning och konvertering Konverterar en typ till en typ som är högre i hierarkin.
:? Matcha uttryck Returnerar true om värdet matchar den angivna typen (inklusive om det är en undertyp), annars returneras false (typtestoperator).
:?> Gjutning och konvertering Konverterar en typ till en typ som är lägre i hierarkin.
# Flexibla typer När det används med en typ anger en flexibel typ, som refererar till en typ eller någon av dess härledda typer.
' Automatisk generalisering Anger en allmän typparameter.
<...> Automatisk generalisering Avgränsar typparametrar.
^ Statiskt lösta typparametrar

Strängar
  • Anger typparametrar som måste matchas vid kompileringstillfället, inte vid körning.
  • Sammanfogar strängar.
{} Klass eller post När det används med nyckelordet type avgränsar du en klass eller post. Typen är en klass när medlemmar deklareras eller nyckelordet class används. Annars är det en post.
{||} Anonym post Anger en anonym post

Symboler som används i medlemsuppslag och utsnittsuttryck

I följande tabell beskrivs ytterligare symboler som används i medlemsuppslag och utsnittsuttryck.

Symbol eller operator Länkar Description
. Medlemmar Öppnar en medlem och separerar enskilda namn i ett fullständigt kvalificerat namn.
[...] eller .[...] Matriser

Indexerade egenskaper

Segmentuttryck
Indexerar i en matris, sträng eller samling eller tar en del av en samling.

Symboler som används i tupplar, listor, matriser, enhetsuttryck och mönster

I följande tabell beskrivs symboler relaterade till tupplar, listor, enhetsvärden och matriser.

Symbol eller operator Länkar Description
( ) Enhetstyp Representerar enhetstypens enskilda värde.
, Tupplar Separerar elementen i en tupplar eller typparametrar.
:: Listor

Matcha uttryck
  • Skapar en lista. Elementet till vänster läggs till i listan till höger.
  • Används i mönstermatchning för att avgränsa delarna i en lista.
@ Listor Sammanfogar två listor.
[...] Listor Avgränsar elementen i en lista.
[|...|] Matriser Avgränsar elementen i en matris.

Symboler som används i imperativa uttryck

I följande tabell beskrivs ytterligare symboler som används i uttryck.

Symbol eller operator Länkar Description
<- Värden Tilldelar ett värde till en variabel.
; Utförlig syntax

Avgränsar uttryck (används främst i utförlig syntax). Separerar även element i en lista eller fält i en post.

Ytterligare symboler som används i sekvenser och beräkningsuttryck

I följande tabell beskrivs ytterligare symboler som används i sekvenser och beräkningsuttryck.

Symbol eller operator Länkar Description
-> Sekvenser Ger ett uttryck (i sekvensuttryck); motsvarar nyckelorden do yield .
! Beräkningsuttryck Efter ett nyckelord anger en modifierad version av nyckelordets beteende som styrs av ett beräkningsuttryck.

Ytterligare symboler som används i matchningsmönster

I följande tabell beskrivs symboler relaterade till mönstermatchning.

Symbol eller operator Länkar Description
-> Matcha uttryck Används i matchningsuttryck.
& Matcha uttryck
  • Beräknar adressen för ett föränderligt värde för användning när du samverkar med andra språk.
  • Används i AND-mönster.
_ Matcha uttryck

Generika
  • Anger ett jokerteckenmönster.
  • Anger en anonym allmän parameter.
| Matcha uttryck Avgränsar enskilda matchningsfall, individuella diskrimineringsfall och uppräkningsvärden.

Ytterligare symboler som används i deklarationer

I följande tabell beskrivs symboler som är relaterade till deklarationer.

Symbol eller operator Länkar Description
(|...|) Aktiva mönster Avgränsar ett aktivt mönsternamn. Kallas även bananklipp.
? Parametrar och argument Anger ett valfritt argument.
~~ Operatörsöverlagring Används för att deklarera en överlagring för unary negation-operatorn.
~- Operatörsöverlagring Används för att deklarera en överlagring för den oföränderliga minusoperatorn.
~+ Operatörsöverlagring Används för att deklarera en överlagring för unary plus-operatorn.

Ytterligare symboler som används i citattecken

I följande tabell beskrivs symboler relaterade till kodcitat.

Symbol eller operator Länkar Description
<@...@> Kodcitat Avgränsar en typgiven kodcitat.
<@@...@@> Kodcitat Avgränsar en otypad kodcitat.
% Kodcitat Används för att dela uttryck i inskrivna kodcitat.
%% Kodcitat Används för att dela upp uttryck i otypade kodcitat.

Dynamiska uppslagsoperatorer

I följande tabell beskrivs ytterligare symboler som används i dynamiska uppslagsuttryck. De används vanligtvis inte i rutinmässig F#-programmering och inga implementeringar av den här operatorn tillhandahålls i F#-kärnbiblioteket.

Symbol eller operator Länkar Description
? Används som operatör för dynamiska metod- och egenskapsanrop.
? ... <- ... Används som operator för att ange dynamiska egenskaper.

Null-operatorer i frågor

Null-operatorer definieras för användning i frågeuttryck. Följande tabell visar dessa operatorer.

Symbol eller operator Länkar Description
%? Operatorer som kan ogiltigas Beräknar heltalsresterna när den högra sidan är en nullbar typ.
*? Operatorer som kan ogiltigas Multiplicerar vänster och höger sida när den högra sidan är en nullbar typ.
+? Operatorer som kan ogiltigas Lägger till vänster och höger sida, när den högra sidan är en nullbar typ.
-? Operatorer som kan ogiltigas Subtraherar den högra sidan från vänster sida, när den högra sidan är en nullbar typ.
/? Operatorer som kan ogiltigas Delar vänster sida vid höger sida, när den högra sidan är en nullbar typ.
<? Operatorer som kan ogiltigas Beräknar mindre än åtgärden när den högra sidan är en nullbar typ.
<>? Operatorer som kan ogiltigas Beräknar åtgärden "inte lika" när den högra sidan är en nullbar typ.
<=? Operatorer som kan ogiltigas Beräknar åtgärden "mindre än eller lika med" när den högra sidan är en nullbar typ.
=? Operatorer som kan ogiltigas Beräknar åtgärden "lika" när den högra sidan är en nullbar typ.
>? Operatorer som kan ogiltigas Beräknar åtgärden "större än" när den högra sidan är en nullbar typ.
>=? Operatorer som kan ogiltigas Beräknar åtgärden "större än eller lika med" när den högra sidan är en nullbar typ.
?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/ Operatorer som kan ogiltigas Motsvarar motsvarande operatorer utan ? prefix, där en nullbar typ finns till vänster.
>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /? Operatorer som kan ogiltigas Motsvarar motsvarande operatorer utan ? suffix, där en nullbar typ finns till höger.
?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/? Operatorer som kan ha värdet Null Motsvarar motsvarande operatorer utan omgivande frågetecken, där båda sidor är nullbara typer.

Referenscelloperatorer (inaktuella)

I följande tabell beskrivs symboler relaterade till referensceller. Användningen av dessa operatorer genererar rådgivande meddelanden från och med F# 6. Mer information finns i Rådgivande meddelanden om referenscellåtgärder.

Symbol eller operator Länkar Description
! Referensceller Refererar till en referenscell.
:= Referensceller Tilldelar ett värde till en referenscell.

Prioritet för operator

I följande tabell visas prioritetsordningen för operatorer och andra uttrycksnyckelord i F#, i ordning från lägsta prioritet till högsta prioritet. I listan visas även associativitet, om tillämpligt.

Operator Associativitet
as Höger
when Höger
| (rör) Vänster
; Höger
let Icke-associerande
function, fun, match, try Icke-associerande
if Icke-associerande
not Höger
-> Höger
:= Höger
, Icke-associerande
or, || Vänster
&, && Vänster
:>, :?> Höger
<op, >op, =, |op, &op, &, $

(inklusive <<<, >>>, |||, &&&)
Vänster
^Op

(inklusive ^^^)
Höger
:: Höger
:? Inte associativ
-op, +op Gäller för infix-användning av dessa symboler
*op, /op, %op Vänster
**Op Höger
f x (funktionsprogram)

(inklusive lazy x, assert x)
Vänster
| (mönstermatchning) Höger
prefixoperatorer (+op, -op, %, %%, &&&, op!, ~op) Vänster
. Vänster
f(x) Vänster
f<Typer> Vänster

F# stöder anpassad operatörsöverlagring. Det innebär att du kan definiera dina egna operatorer. I föregående tabell kan op vara valfri giltig (eventuellt tom) sekvens med operatortecken, antingen inbyggda eller användardefinierade. Därför kan du använda den här tabellen för att avgöra vilken sekvens med tecken som ska användas för en anpassad operator för att uppnå önskad prioritetsnivå. Inledande . tecken ignoreras när kompilatorn bestämmer prioritet.

Se även