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.