Unit-Typ (F#)

Der unit-Typ gibt das Fehlen eines bestimmten Werts an. Der unit-Typ verfügt über einen einzigen Wert, der als Platzhalter fungiert, wenn kein anderer Wert vorhanden ist oder benötigt wird.

// The value of the unit type.
()

Hinweise

Jeder F#-Ausdruck muss einen Wert ergeben. Für Ausdrücke, die keinen Wert generieren, der relevant ist, wird der Wert vom Typ unit verwendet. Der unit-Typ ähnelt dem void-Typ in Sprachen wie beispielsweise C# und C++.

Der unit-Typ verfügt über einen einzelnen Wert, und dieser Wert wird durch das Token () angegeben.

Der Wert des unit-Typs wird bei der F#-Programmierung häufig als Platzhalter verwendet, wenn die Syntax einen Wert erfordert, jedoch kein Wert benötigt oder gewünscht wird. Ein Beispiel hierfür ist der Rückgabewert einer printf-Funktion. Da die wichtigen Aktionen des printf-Vorgangs in der Funktion erfolgen, muss die Funktion keinen tatsächlichen Wert zurückgeben. Daher ist der Rückgabewert vom Typ unit.

Einige Konstrukte erwarten einen unit-Wert. Beispielsweise wird erwartet, dass eine do-Bindung oder Code auf der obersten Ebene eines Moduls einen unit-Wert ergibt. Der Compiler gibt eine Warnung aus, wenn eine do-Bindung oder Code auf der obersten Ebene eines Moduls ein anderes Ergebnis als den nicht verwendeten unit-Wert ergibt, wie im folgenden Beispiel gezeigt.

let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20 
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore

Diese Warnung ist eine Besonderheit der funktionalen Programmierung. Sie wird in anderen .NET-Programmiersprachen nicht angezeigt. In einem rein funktionalen Programm, in dem Funktionen keine Nebeneffekte aufweisen, ist der letzte Rückgabewert das einzige Ergebnis eines Funktionsaufrufs. Wenn das Ergebnis ignoriert wird, liegt daher möglicherweise ein Programmierfehler vor. Obwohl F# keine rein funktionale Programmiersprache ist, sollten Sie nach Möglichkeit Code im Stil der funktionalen Programmierung schreiben.

Siehe auch

Referenz

Primitive Typen (F#)

Weitere Ressourcen

F#-Sprachreferenz