Поиск…


Синтаксис

  • Debug.log "tag" anyValue

замечания

Debug.log использует два параметра: String чтобы пометить вывод отладки в консоли (чтобы вы знали, откуда он / от сообщения соответствует) и значение любого типа. Debug.log выполняет побочный эффект регистрации тега и значения в консоли JavaScript, а затем возвращает значение. Реализация в JS может выглядеть примерно так:

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

JavaScript имеет неявные преобразования, поэтому value не должно быть явно преобразовано в String для работы вышеприведенного кода. Однако типы Elm должны быть явно преобразованы в String , а собственный код для Debug.log показывает это в действии.

Ведение журнала без прерывания вычислений

Второй аргумент Debug.log всегда возвращается, поэтому вы можете написать код следующим образом, и он просто сработает :

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

Замена case msg of с case Debug.log "The Message" msg of приведет к тому, что текущее сообщение будет регистрироваться в консоли каждый раз при вызове функции обновления, но ничего не изменит.

Трубопровод Debug.log

Во время выполнения следующего будет отображаться список URL-адресов в консоли и продолжить вычисление

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

Отладчик времени

0,17 0,18,0

На момент написания (июль 2016 года) вяжущий реактор временно лишился своей функциональности во времени. Однако можно получить его, используя jinjor/elm-time-travel .

Это функции использования Html.App program* Html.App или модулей Navigation , например, вместо:

import Html.App

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

вы должны написать:

import TimeTravel.Html.App

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

(Конечно, после установки пакета с elm-package .)

В результате изменится интерфейс вашего приложения, см. Одну из демонстраций .

0.18.0

Начиная с версии 0.18.0, вы можете просто скомпилировать свою программу с помощью флага --debug и получить отладку во время путешествия без каких-либо дополнительных усилий.

Debug.Crash

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

Вы можете использовать Debug.crash если вы хотите, чтобы программа потерпела неудачу, обычно используется, когда вы находитесь в середине реализации выражения case . Не рекомендуется использовать Debug.crash вместо использования типа Maybe или Result для непредвиденных входов, но обычно только в ходе разработки (т. Debug.crash Вы обычно не публикуете код Elm, который использует Debug.crash ).

Debug.crash принимает одно значение String , сообщение об ошибке отображается при сбое. Обратите внимание, что Elm также выводит имя модуля и строку сбоя, а если сбой в выражении case , он будет указывать значение этого case .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow