Elm:
Debug-output afdrukken
Hoe te:
Elm heeft geen ingebouwde print
functie zoals sommige talen, maar je kunt de Debug
module gebruiken voor de console output:
import Debug
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
model
|> Debug.log "model voor update"
|> actualUpdateFunction msg
|> Debug.log "model na update"
Je zult zoiets zien in de console van je browser:
model voor update: { ... enige modelgegevens ... }
model na update: { ... enige bijgewerkte modelgegevens ... }
Onthoud, de Debug.log
functie is handig, maar verzend je code er niet mee. Elm zal je eraan herinneren om debugstatements te verwijderen voordat je een productiebuild kunt maken.
Uitdieping
Debug.log
maakt deel uit van de Elm Debug
module, ontworpen voor alleen assistentie tijdens de ontwikkeling. Historisch gezien heeft Elm de nadruk gelegd op onderhoudbaarheid en foutafhandeling, waarbij de Debug
module bewust eenvoudig is gelaten. De eenvoud ervan zorgt ervoor dat ontwikkelaars zich richten op betekenisvolle output in plaats van verdwaald te raken in een uitgebreide debugging suite.
De Debug.log
functie van Elm neemt twee argumenten: een stringtag en de te loggen gegevens. De output wordt vervolgens afgedrukt naar de browserconsole. De alternatieven voor deze aanpak zouden zijn:
- Traditionele console logging: Elm ondersteunt geen directe console logging vanwege Elm’s architectuur die streeft naar nul runtime-uitzonderingen, en directe logging zou deze garantie kunnen verbreken.
- Elm’s Tijdreizende Debugger: Dit hulpmiddel laat je de staat van je applicatie in de loop van de tijd visualiseren zonder console logs en is een krachtige manier om complexe apps te debuggen.
Wat betreft de implementatie, de Debug.log
functie verpakt je gegevens met een identificatietag. Dit is handig om verschillende gegevenspunten te onderscheiden. In productie zal de Elm-compiler elk gebruik van Debug.log
markeren, waardoor je je productiecode schoon houdt van debugging artefacten.
Zie ook
- Elm’s officiële gids over debugging: https://guide.elm-lang.org/debugging/
- Introductie van de Tijdreizende Debugger: https://elm-lang.org/news/the-perfect-bug-report
- Elm Debug module documentatie: https://package.elm-lang.org/packages/elm/core/latest/Debug