Sök…


Syntax

  • Debug.log "tagg" anyValue

Anmärkningar

Debug.log tar två parametrar, en String att tagga felsökningsutgången i konsolen (så att du vet var det kommer från / vad meddelandet motsvarar) och ett värde av vilken typ som helst. Debug.log kör sidoeffekten av att logga taggen och värdet till JavaScript-konsolen och returnerar sedan värdet. Implementeringen i JS kan se ut som:

function log (tag, value){
    console.log(tag, value);
    return value
}

JavaScript har implicita konverteringar, så value behöver inte konverteras uttryckligen till en String för att ovanstående kod ska fungera. Elmtyper måste emellertid uttryckligen konverteras till en String , och den inbyggda koden för Debug.log visar detta i handling.

Loggar ett värde utan att avbryta beräkningarna

Debug.log andra argument returneras alltid, så du kan skriva kod som följande och det skulle bara fungera :

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case Debug.log "The Message" msg of
        Something ->
            ...

case msg of med en case Debug.log "The Message" msg of kommer att göra att det aktuella meddelandet loggas på konsolen varje gång uppdateringsfunktionen kallas, men ändrar ingenting annat.

Piping a Debug.log

Vid körtid skulle följande visa en lista över url i din konsol och fortsätta beräkningen

payload =
    [{url:..., title:...}, {url=..., title=...}]

main = 
    payload
        |> List.map .url -- only takes the url
        |> Debug.log " My list of URLs" -- pass the url list to Debug.log and return it
        |> doSomething -- do something with the url list

Tidsresande felsökare

0,17 0,18,0

I skrivande stund (juli 2016) har elm-reaktorn tillfälligt tagits bort från sin tidsresande funktionalitet. Det går dock att få det med jinjor/elm-time-travel paketet.

Det är användningsspeglar Html.App eller Navigation program* -funktioner, till exempel istället för:

import Html.App

main =
    Html.App.program
        { init = init
        , update = update
        , view = view
        , subscriptions = subscriptions
        }

du skulle skriva:

import TimeTravel.Html.App

main =
    TimeTravel.Html.App.program
        { init = init
        , update = update
        , view = view
        , subscriptions = subscriptions
        }

(Naturligtvis efter att ha installerat paketet med elm-package .)

Gränssnittet för din app ändras som ett resultat, se en av demos .

0.18.0

Sedan version 0.18.0 kan du helt enkelt kompilera ditt program med --debug flaggan och få tidsresor felsökning utan ytterligare ansträngning.

Debug.Crash

case thing of
    Cat ->
        meow
    Bike ->
        ride
    Sandwich ->
        eat
    _ ->
        Debug.crash "Not yet implemented"

Du kan använda Debug.crash när du vill att programmet ska misslyckas, som normalt används när du är i mitten av att genomföra ett case uttryck. Det är inte rekommenderat att använda Debug.crash istället för att använda ett Maybe eller Result typ för oväntade ingångar men vanligtvis endast under utveckling (dvs du normalt inte skulle publicera Elm kod, som använder Debug.crash ).

Debug.crash tar ett String värde felmeddelandet att visa när krascha. Observera att Elm kommer också ut namnet på modulen och raden av kraschen, och om kraschen i en case uttryck, kommer det att ange värdet av case .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow