Elm Language
отладка
Поиск…
Синтаксис
- 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
Отладчик времени
На момент написания (июль 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, вы можете просто скомпилировать свою программу с помощью флага --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 .