Type eenheid

Het unit type is een type dat aangeeft dat er geen specifieke waarde is. Het unit type heeft slechts één waarde, die fungeert als een tijdelijke aanduiding wanneer er geen andere waarde bestaat of nodig is.

Syntaxis

// The value of the unit type.
()

Opmerkingen

Elke F#-expressie moet een waarde opleveren. Voor expressies die geen waarde genereren die van belang is, wordt de waarde van het type unit gebruikt. Het unit type lijkt op het void type in talen zoals C# en C++.

Het unit type heeft één waarde en die waarde wordt aangegeven door het token ().

De waarde van het unit type wordt vaak gebruikt in F#-programmering om de plaats te bewaren waar een waarde is vereist voor de taalsyntaxis, maar wanneer er geen waarde nodig of gewenst is. Een voorbeeld hiervan is de retourwaarde van een printf functie. Omdat de belangrijke acties van de printf bewerking plaatsvinden in de functie, hoeft de functie geen werkelijke waarde te retourneren. Daarom is de retourwaarde van het type unit.

Sommige constructies verwachten een unit waarde. Een binding of code op het hoogste niveau van een module wordt bijvoorbeeld do naar verwachting geëvalueerd naar een unit waarde. De compiler rapporteert een waarschuwing wanneer een do binding of code op het hoogste niveau van een module een ander resultaat produceert dan de unit waarde die niet wordt gebruikt, zoals wordt weergegeven in het volgende voorbeeld.

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

Deze waarschuwing is een kenmerk van functioneel programmeren; het wordt niet weergegeven in andere .NET-programmeertalen. In een puur functioneel programma, waarin functies geen bijwerkingen hebben, is de uiteindelijke retourwaarde het enige resultaat van een functieaanroep. Als het resultaat daarom wordt genegeerd, is het een mogelijke programmeerfout. Hoewel F# geen puur functionele programmeertaal is, is het een goede gewoonte om waar mogelijk de functionele programmeerstijl te volgen.

Zie ook