F#-Typen
In diesem Thema werden die in F# verwendeten Typen beschrieben, und es wird erläutert, wie F#-Typen benannt und beschrieben werden.
Übersicht über F#-Typen
Einige Typen gelten als primitive Typen, z. B. der boolesche Typ bool sowie ganzzahlige Typen und Gleitkommatypen verschiedener Größe, darunter Typen für Bytes und Zeichen. Diese Typen werden in Primitive Typen (F#) beschrieben.
Andere in F# integrierte Typen sind Tupel, Listen, Arrays, Sequenzen, Datensätze und Unterscheidungs-Unions. Wenn Sie über Erfahrung mit anderen .NET-Sprachen verfügen und F# erlernen, sollten Sie die Themen für jeden dieser Typen lesen. Der Abschnitt Verwandte Themen dieses Themas enthält Links zu weiteren Informationen über diese Typen. Die F#-spezifischen Typen unterstützen die üblichen Programmierungsstile von funktionalen Programmiersprachen. Vielen dieser Typen sind Module in der F#-Bibliothek zugeordnet, die allgemeine Operationen mit diesen Typen unterstützt.
Der Typ einer Funktion enthält Informationen über die Parametertypen und den Rückgabetyp.
.NET Framework ist die Quelle von Objekttypen, Schnittstellentypen, Delegattypen und anderen Typen. Sie können genau wie in jeder anderen .NET-Sprache eigene Objekttypen definieren.
In F#-Code können auch Aliase definiert werden. Dies sind benannte Typabkürzungen, die als alternative Namen für Typen verwendet werden. Sie können Typabkürzungen verwenden, wenn sich der Typ möglicherweise in der Zukunft ändert und Sie Code nicht ändern möchten, der von dem Typ abhängt. Oder Sie können eine Typabkürzung als Anzeigenamen für einen Typ verwenden, um die Lesbarkeit und Verständlichkeit von Code zu erhöhen.
Syntax für Typen
In F#-Code müssen Sie oft die Namen von Typen schreiben. Jeder Typ verfügt über eine syntaktische Form, und Sie verwenden diese syntaktischen Formen in Typanmerkungen, abstrakten Methodendeklarationen, Delegatdeklarationen, Signaturen und anderen Konstrukten. Wenn Sie im Interpreter ein neues Programmkonstrukt deklarieren, gibt der Interpreter immer den Namen des Konstrukts und die Syntax für dessen Typ aus. Die Syntax kann einfach ein Bezeichner für einen benutzerdefinierten Typ oder ein integrierter Bezeichner, z. B. für int oder string sein, jedoch ist die Syntax für komplexere Typen komplexer.
In der folgenden Tabelle werden Aspekte der Typsyntax für F#-Typen dargestellt.
Typ |
Typsyntax |
Beispiele |
---|---|---|
Primitiver Typ |
type-name |
int float string |
Aggregierter Typ (Klasse, Struktur, Union, Datensatz, Enumeration usw.) |
type-name |
System.DateTime Color |
Typabkürzung |
type-abbreviation-name |
bigint |
Vollqualifizierter Typ |
namespaces.type-name oder modules.type-name oder namespaces.modules.type-name |
System.IO.StreamWriter |
-Array |
type-name[] oder type-name-Array |
int[] array<int> int array |
Zweidimensionales Array |
type-name[,] |
int[,] float[,] |
Dreidimensionales Array |
type-name[,,] |
float[,,] |
Tupel |
type-name1 * type-name2 ... |
Beispielsweise ist (1,'b',3) vom Typ int * char * int. |
Typ, generischer |
type-parameter generic-type-name oder generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
Konstruierter Typ (ein generischer Typ, für den ein bestimmtes Typargument bereitgestellt wurde) |
type-argument generic-type-name oder generic-type-name<type-argument-list> |
int option string list int ref option<int> list<string> ref<int> Dictionary<int, string> |
Funktionstyp, der über einen einzelnen Parameter verfügt |
parameter-type1 -> return-type |
Eine Funktion, die ein int akzeptiert und einen string zurückgibt, besitzt den Typ int -> string. |
Funktionstyp, der über mehrere Parameter verfügt |
parameter-type1 -> parameter-type2 -> ... -> return-type |
Eine Funktion, die ein int und ein float akzeptiert und einen string vom Typ int -> float -> string zurückgibt. |
Funktion höherer Ordnung als Parameter |
(function-type) |
List.map ist vom Typ ('a -> 'b) -> 'a list -> 'b list. |
Delegat |
Delegat von function-type |
delegate of unit -> int |
Flexibler Typ |
#type-name |
#System.Windows.Forms.Control #seq<int> |
Verwandte Themen
Thema |
Beschreibung |
---|---|
Beschreibt integrierte einfache Typen z. B. ganzzahlige Typen, den Boolean-Typ und Zeichentypen. |
|
Beschreibt den unit-Typ, ein Typ, der über einen einzelnen Wert verfügt und mit () angegeben wird. Entspricht void in C# und Nothing in Visual Basic. |
|
Beschreibt den Tupeltyp, ein Typ, der aus zugeordneten Werten eines beliebigen Typs besteht, die als Paare, Tripel, Quadrupel usw. angeordnet sind. |
|
Beschreibt den Optionstyp, ein Typ, der entweder über einen Wert verfügt oder leer ist. |
|
Beschreibt Listen. Dies sind geordnete, unveränderliche Reihen von Elementen, die vom gleichen Typ sind. |
|
Beschreibt Arrays. Dies sind geordnete Mengen von änderbaren Elementen des gleichen Typs, die einen zusammenhängenden Speicherblock belegen und eine feste Größe aufweisen. |
|
Beschreibt den Sequenztyp. Dieser stellt eine logische Reihe von Werten dar. Einzelne Werte werden nur bei Bedarf berechnet. |
|
Beschreibt den Datensatztyp, ein kleines Aggregat benannter Werte. |
|
Beschreibt den Unterscheidungs-Union-Typ, ein Typ, dessen Werte einen beliebigen Typ aus einem Satz möglicher Typen aufweisen können. |
|
Beschreibt Funktionswerte. |
|
Beschreibt den Klassentyp, ein Objekttyp, der einem .NET-Verweistyp entspricht. Klassentypen können Member, Eigenschaften, implementierte Schnittstellen und einen Basistyp enthalten. |
|
Beschreibt den struct-Typ, ein Objekttyp, der einem .NET-Werttyp entspricht. Der struct-Typ stellt normalerweise ein kleines Aggregat von Daten dar. |
|
Beschreibt Schnittstellentypen. Diese Typen stellen einen Satz von Membern dar, die bestimmte Funktionen bereitstellen, jedoch keine Daten enthalten. Ein Schnittstellentyp ist nur von Nutzen, wenn er von einem Objekttyp implementiert wird. |
|
Beschreibt den Delegattyp. Dieser stellt eine Funktion als Objekt dar. |
|
Beschreibt Enumerationstypen. Deren Werte gehören einem Satz benannter Werte an. |
|
Beschreibt Attribute. Diese werden verwendet, um Metadaten für einen anderen Typ anzugeben. |
|
Beschreibt Ausnahmen. Diese geben Fehlerinformationen an. |