Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Waarden in F# zijn hoeveelheden die een specifiek type hebben; waarden kunnen integrale of drijvende kommanummers, tekens of tekst zijn, lijsten, reeksen, matrices, tuples, gediscrimineerde samenvoegingen, records, klassetypen of functiewaarden.
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 uit de definitie. Voor een primitief type, zoals een integraal of drijvendekommagetal, 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 zijn unsigned int, terwijl de compiler het type a van moet intafleiden. Het type van een functiewaarde wordt bepaald op basis van de retourwaarde in de hoofdtekst van de functie. Zie Functions voor meer informatie over functiewaardetypen. Zie Letterlijke typen 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 Opties voor compiler).
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# het primaat 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 onveranderbare variabelen die kunnen worden gewijzigd door veel verschillende threads moeilijk te beheren. Met veranderlijke variabelen kan het soms lastig 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 gedragen functies zich strikt als wiskundige functies. Wanneer code in een procedurele taal 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 striktheid maakt 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 procedurele code.
F# is geen pure functionele taal, maar biedt volledige ondersteuning voor functioneel programmeren. Het gebruik van onveranderbare waarden is een goede gewoonte omdat hierdoor uw code kan profiteren van een belangrijk aspect van functioneel programmeren.
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 gewijzigd.
U kunt een initiƫle waarde toewijzen aan een veranderlijke variabele door het let trefwoord op dezelfde manier te gebruiken als u een waarde definieert. Het verschil is echter dat u nieuwe waarden vervolgens kunt toewijzen aan veranderlijke variabelen met behulp van de <- operator, zoals in het volgende voorbeeld.
let mutable x = 1
x <- x + 1
Waarden die worden gemarkeerd mutable , kunnen automatisch worden gepromoveerd tot 'a ref wanneer ze worden vastgelegd door een sluiting, inclusief formulieren die sluitingen maken, zoals seq bouwers. Als u een melding wilt ontvangen wanneer dit gebeurt, schakelt u waarschuwing 3180 in uw projectbestand in of bij het aanroepen van de compiler.
Verwante onderwerpen
| Titel | Beschrijving |
|---|---|
| Bindingen toestaan | Biedt informatie over het gebruik van het let trefwoord om namen te binden aan waarden en functies. |
| Functies | Biedt een overzicht van functies in F#. |