Szukaj…


Składnia

  • Debug.log „tag” anyValue

Uwagi

Debug.log przyjmuje dwa parametry, String Debug.log do oznaczenia wyniku debugowania w konsoli (abyś wiedział, skąd pochodzi / co odpowiada komunikatowi) oraz wartość dowolnego typu. Debug.log wykonuje efekt uboczny logowania tagu i wartości do konsoli JavaScript, a następnie zwraca wartość. Implementacja w JS może wyglądać mniej więcej tak:

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

JavaScript ma niejawne konwersje, więc value powyższego kodu nie musi być jawnie konwertowana na String . Jednak typy wiązów muszą zostać jawnie przekonwertowane na String , a kod macierzysty dla Debug.log pokazuje to w akcji.

Rejestrowanie wartości bez przerywania obliczeń

Drugi argument Debug.log jest zawsze zwracany, więc możesz napisać kod podobny do następującego i po prostu zadziała :

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

Zamiana case msg of case Debug.log "The Message" msg of spowoduje, że bieżący komunikat będzie rejestrowany w konsoli przy każdym wywołaniu funkcji aktualizacji, ale nic innego nie zmienia.

Przesyłanie pliku dziennika debugowania.log

W czasie wykonywania poniższe polecenie wyświetli listę adresów URL w konsoli i kontynuuje obliczenia

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

Debuger podróżujący w czasie

0,17 0,18,0

W momencie pisania (lipiec 2016 r.) Wiąz wiąz został tymczasowo pozbawiony funkcji podróżowania w czasie. Można go jednak uzyskać, korzystając z pakietu jinjor/elm-time-travel .

Jego użycie odzwierciedla Html.App lub program* modułów Navigation program* , na przykład zamiast:

import Html.App

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

napisałbyś:

import TimeTravel.Html.App

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

(Oczywiście po zainstalowaniu pakietu z pakietem elm-package ).

Interfejs aplikacji zmienia się w wyniku, zobacz jedną z wersji demonstracyjnych .

0.18.0

Od wersji 0.18.0 możesz po prostu skompilować swój program z flagą --debug i uzyskać debugowanie w czasie bez dodatkowego wysiłku.

Debug.Crash

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

Możesz użyć Debug.crash gdy chcesz, aby program się nie powiódł, zwykle używany, gdy jesteś w trakcie implementacji wyrażenia case . Nie zaleca się stosowania Debug.crash zamiast korzystania z Maybe lub Result typ dla nieoczekiwanych wejść, ale zazwyczaj tylko w trakcie rozwoju (czyli zazwyczaj nie publikuje kod Elm który wykorzystuje Debug.crash ).

Debug.crash trwa jeden String wartość, komunikat o błędzie, aby pokazać, kiedy upaść. Zauważ, że Elm wyświetli także nazwę modułu i linię awarii, a jeśli awaria jest wyrażeniem case , wskaże wartość case .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow