F#-Typen
Dieser Artikel beschreibt die Typen, die in F# verwendet werden und wie F#-Typen benannt und beschrieben werden.
Zusammenfassung der F#-Typen
Einige Typen gelten als primitive Typen, z. B. der boolesche Typ bool
und integrale Typen sowie Gleitkommatypen verschiedener Größen, die Typen für Bytes und Zeichen enthalten. Diese Typen werden in primitiven Typen beschrieben.
Andere Typen, die in die Sprache integriert sind, sind Tupel, Listen, Arrays, Sequenzen, Datensätze und diskriminierte Union-Typen. Wenn Sie Erfahrung mit anderen .NET-Sprachen haben und F# erlernen, sollten Sie die Artikel für jeden dieser Typen lesen. Diese F#-spezifischen Typen unterstützen Programmierstile, die für funktionale Programmiersprachen gelten. Viele dieser Typen verfügen über zugeordnete Module in der F#-Bibliothek, die allgemeine Vorgänge für diese Typen unterstützen.
Der Typ einer Funktion enthält Informationen zu den Parametertypen und dem Rückgabetyp.
.NET Framework ist die Quelle von Objekttypen, Schnittstellentypen, Delegattypen und anderen. Sie können Ihre eigenen Objekttypen genauso wie in jeder anderen .NET-Sprache definieren.
Außerdem kann F#-Code Aliase definieren, die benannte Typkürzungen sind, die alternative Namen für Typen sind. Sie können Typkürzungen verwenden, wenn sich der Typ in Zukunft möglicherweise ändert, und Sie sollten vermeiden, den Code zu ändern, der vom Typ abhängt. Alternativ können Sie eine Typkürzung als Anzeigenamen für einen Typ verwenden, der das Lesen und Verstehen von Code erleichtern kann.
F# bietet nützliche Sammlungstypen, die mit funktionaler Programmierung konzipiert sind. Die Verwendung dieser Sammlungstypen hilft Ihnen beim Schreiben von funktionalerem Code. Weitere Informationen finden Sie unter F#-Sammlungstypen.
Syntax für Typen
In F#-Code müssen Sie häufig die Namen von Typen ausschreiben. Jeder Typ verfügt über ein syntaktisches Formular, und Sie verwenden diese syntaktischen Formulare in Typanmerkungen, abstrakte Methodendeklarationen, Delegatdeklarationen, Signaturen und anderen Konstrukten. Wenn Sie ein neues Programmkonstrukt im Interpreter deklarieren, druckt der Interpreter den Namen des Konstrukts und die Syntax für den zugehörigen Typ. Diese Syntax kann nur ein Bezeichner für einen benutzerdefinierten Typ oder einen integrierten Bezeichner sein, z. B. für int
oder string
, aber für komplexere Typen ist die Syntax komplexer.
Die folgende Tabelle enthält Aspekte der Typsyntax für F#-Typen.
type | Syntax für Typen | Beispiele |
---|---|---|
Primitiver Typ | type-name | int float string |
Aggregattyp (Klasse, Struktur, Union, Datensatz, Enumeration usw.) | type-name | System.DateTime Color |
Typabkürzung | type-abbreviation-name | bigint |
Der vollqualifizierte 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[,,] |
tuple | type-name1 * type-name2 ... | Beispielsweise weist (1,'b',3) den Typ int * char * int auf. |
generischer Typ | type-parameter generic-type-name or generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
konstruierter Typ (ein generischer Typ, der ein bestimmtes Typargument enthält) | type-argument generic-type-name or generic-type-name<type-argument-list> |
int option string list int ref option<int> list<string> ref<int> Dictionary<int, string> |
Funktionstyp mit einem einzelnen Parameter | parameter-type1 ->return-type | Eine Funktion, die einen int übernimmt und einen string zurückgibt, verfügt über den Typ int -> string . |
Funktionstyp mit mehreren Parametern | parameter-type1 ->parameter-type2 -> ... ->return-type | Eine Funktion, die einen int und float übernimmt und einen string zurückgibt, verfügt über den Typ int -> float -> string . |
Höhere Ordnungsfunktion als Parameter | (function-type) | List.map weist den Typ ('a -> 'b) -> 'a list -> 'b list auf. |
delegate | Delegat von function-type | delegate of unit -> int |
Flexibler Typ | #type-name | #System.Windows.Forms.Control #seq<int> |
Verwandte Themen
Thema | Beschreibung |
---|---|
Primitive Typen | Beschreibt integrierte einfache Typen wie integrale Typen, boolesche Typen und Zeichentypen |
Unit-Typ | Beschreibt den unit -Typ, einen Typ, der einen Wert aufweist und durch () angegeben wird; entspricht void in C# und Nothing in Visual Basic |
Tupel | Beschreibt den Tupeltyp, einen Typ, der aus zugeordneten Werten eines beliebigen Typs besteht, der in Paaren, Tripeln, Quadrupeln usw. gruppiert ist |
Optionen | Beschreibt den Optionstyp, einen Typ, der entweder einen Wert aufweist oder leer ist |
Listen | Beschreibt Listen, die sortierte, unveränderliche Reihen von Elementen desselben Typs sind. |
Arrays | Beschreibt Arrays, die geordnete Gruppen von veränderbaren Elementen desselben Typs sind, die einen zusammenhängenden Speicherblock belegen und eine feste Größe aufweisen |
Sequenzen | Beschreibt den Sequenztyp, der eine logische Reihe von Werten darstellt. Einzelne Werte werden nur bei Bedarf berechnet. |
Datensätze | Beschreibt den Datensatztyp, ein kleines Aggregat benannter Werte |
Unterscheidungs-Unions | Beschreibt den diskriminierten Union-Typ, einen Typ, dessen Werte eine beliebige Gruppe möglicher Typen sein können |
Funktionen | Beschreibt Funktionswerte |
Klassen | Beschreibt den Klassentyp, einen Objekttyp, der einem .NET-Verweistyp entspricht. Klassentypen können Member, Eigenschaften, implementierte Schnittstellen und einen Basistyp enthalten. |
Strukturen | Beschreibt den struct -Typ, einen Objekttyp, der einem .NET-Werttyp entspricht. Der struct -Typ stellt in der Regel ein kleines Datenaggregat dar. |
Schnittstellen | Beschreibt Schnittstellentypen, bei denen es sich um Typen handelt, die eine Gruppe von Membern darstellen, die bestimmte Funktionen bereitstellen, aber keine Daten enthalten. Ein Schnittstellentyp muss von einem Objekttyp implementiert werden, um nützlich zu sein. |
Delegaten | Beschreibt den Delegattyp, der eine Funktion als Objekt darstellt |
Enumerationen | Beschreibt Enumerationstypen, deren Werte zu einer Gruppe benannter Werte gehören |
Attribute | Beschreibt Attribute, die zum Angeben von Metadaten für einen anderen Typ verwendet werden |
Ausnahmetypen | Beschreibt Ausnahmen, die Fehlerinformationen angeben |