Waarden

Waarden in F# zijn hoeveelheden die een specifiek type hebben; waarden kunnen integraal of drijvendekommanummers, tekens of tekst, lijsten, reeksen, matrices, tuples, gediscrimineerde samenvoegingen, records, klassetypen of functiewaarden zijn.

Een waarde binden

De termbinding betekent het koppelen van een naam aan een definitie. Het let trefwoord verbindt een waarde, zoals in de volgende voorbeelden:

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

Het type van een waarde wordt afgeleid van de definitie. Voor een primitief type, zoals een integraal of drijvendekommanummer, wordt het type bepaald op basis van het type letterlijke waarde. Daarom wordt in het vorige voorbeeld de compiler afgeleid van b het type dat moet worden, unsigned intterwijl de compiler het type a van moet afleiden int. Het type van een functiewaarde wordt bepaald door de retourwaarde in de hoofdtekst van de functie. Zie Functions voor meer informatie over functiewaardetypen. Zie Letterlijke gegevens voor meer informatie over letterlijke typen.

De compiler geeft standaard geen diagnostische gegevens over ongebruikte bindingen uit. Als u deze berichten wilt ontvangen, schakelt u waarschuwing 1182 in uw projectbestand in of bij het aanroepen van de compiler (zie --warnon onder Compileropties).

Waarom onveranderbaar?

Onveranderbare waarden zijn waarden die niet kunnen worden gewijzigd tijdens de uitvoering van een programma. Als u gewend bent aan talen zoals C++, Visual Basic of C#, is het misschien verrassend dat F# primacy plaatst boven onveranderbare waarden in plaats van variabelen die nieuwe waarden kunnen worden toegewezen tijdens de uitvoering van een programma. Onveranderbare gegevens zijn een belangrijk element van functioneel programmeren. In een omgeving met meerdere threads zijn gedeelde veranderlijke variabelen die door veel verschillende threads kunnen worden gewijzigd, moeilijk te beheren. Met veranderlijke variabelen kan het soms moeilijk zijn om te zien of een variabele kan worden gewijzigd wanneer deze wordt doorgegeven aan een andere functie.

In pure functionele talen zijn er geen variabelen en werken functies strikt als wiskundige functies. Wanneer code in een proceduretaal een variabeletoewijzing gebruikt om een waarde te wijzigen, heeft de equivalente code in een functionele taal een onveranderbare waarde die de invoer, een onveranderbare functie en verschillende onveranderbare waarden als uitvoer is. Deze wiskundige strengheid maakt een strakkere redenering mogelijk over het gedrag van het programma. Deze strakkere redenering is wat compilers in staat stelt om code strenger te controleren en effectiever te optimaliseren, en helpt ontwikkelaars om de juiste code beter te begrijpen en te schrijven. Functionele code is daarom waarschijnlijk eenvoudiger om fouten op te sporen dan gewone procedurecode.

F# is geen pure functionele taal, maar ondersteunt volledig functionele programmering. Het gebruik van onveranderbare waarden is een goede gewoonte omdat hiermee uw code kan profiteren van een belangrijk aspect van functionele programmering.

Veranderlijke variabelen

U kunt het trefwoord mutable gebruiken om een variabele op te geven die kan worden gewijzigd. Veranderlijke variabelen in F# moeten over het algemeen een beperkt bereik hebben, ofwel als een veld van een type of als een lokale waarde. Veranderlijke variabelen met een beperkt bereik zijn gemakkelijker te beheren en zijn minder waarschijnlijk op onjuiste manieren te wijzigen.

U kunt een initiƫle waarde toewijzen aan een veranderlijke variabele met behulp van het let trefwoord op dezelfde manier als u een waarde definieert. Het verschil is echter dat u vervolgens nieuwe waarden kunt toewijzen aan veranderlijke variabelen met behulp van de <- operator, zoals in het volgende voorbeeld.

let mutable x = 1
x <- x + 1

Gemarkeerde mutable waarden kunnen automatisch worden gepromoveerd naar 'a ref als ze worden vastgelegd door een sluiting, inclusief formulieren die sluitingen maken, zoals seq opbouwfuncties. Als u een melding wilt ontvangen wanneer dit gebeurt, schakelt u waarschuwing 3180 in uw projectbestand in of bij het aanroepen van de compiler.

Titel Beschrijving
bindingen toestaan Bevat informatie over het gebruik van het let trefwoord om namen te binden aan waarden en functies.
Functies Biedt een overzicht van functies in F#.

Zie ook