Ricerca…


Sintassi

  • Debug.log "tag" anyValue

Osservazioni

Debug.log accetta due parametri, una String per contrassegnare l'output di debug nella console (in modo da sapere da dove proviene / a cosa corrisponde il messaggio) e un valore di qualsiasi tipo. Debug.log esegue l'effetto collaterale della registrazione del tag e del valore nella console JavaScript, quindi restituisce il valore. L'implementazione in JS potrebbe assomigliare a qualcosa:

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

JavaScript ha conversioni implicite, quindi il value non deve essere convertito esplicitamente in una String affinché il codice sopra possa funzionare. Tuttavia, i tipi Elm devono essere convertiti esplicitamente in una String e il codice Native per Debug.log mostra in azione.

Registrazione di un valore senza interrompere i calcoli

Il secondo argomento di Debug.log viene sempre restituito, quindi è possibile scrivere il codice come segue e funzionerà solo :

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

Sostituendo il case msg of con il case Debug.log "The Message" msg of farà sì che il messaggio corrente venga registrato nella console ogni volta che viene chiamata la funzione di aggiornamento, ma non cambia nient'altro.

Piping a Debug.log

In fase di esecuzione il seguente potrebbe visualizzare un elenco di url nella tua console e continuare il calcolo

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

Debugger che viaggia nel tempo

0,17 0,18,0

Al momento della stesura (luglio 2016) il reattore elm è stato temporaneamente privato della sua funzionalità di viaggiare nel tempo. È possibile ottenerlo, però, usando il jinjor/elm-time-travel .

Le funzioni di program* mirroring dell'uso Html.App o Navigation , ad esempio invece di:

import Html.App

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

scrivi:

import TimeTravel.Html.App

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

(Naturalmente, dopo aver installato il pacchetto con elm-package .)

Di conseguenza, l'interfaccia della tua app cambia, vedi una delle demo .

0.18.0

Dalla versione 0.18.0 puoi semplicemente compilare il tuo programma con il flag --debug e ottenere il debug del viaggio nel tempo senza ulteriori sforzi.

Debug.Crash

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

È possibile utilizzare Debug.crash quando si desidera che il programma non riesca, in genere utilizzato quando si sta implementando un'espressione di case . Non è raccomandato l'uso di Debug.crash invece di utilizzare un Maybe o Result tipo per input imprevisti, ma in genere solo durante il corso dello sviluppo (cioè in genere non sarebbe pubblicare il codice Elm che utilizza Debug.crash ).

Debug.crash richiede un valore di String , il messaggio di errore per mostrare quando si blocca. Nota che Elm produrrà anche il nome del modulo e la linea del crash, e se il crash è in un'espressione di case , indicherà il valore del case .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow