수색…


통사론

  • 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 ofcase Debug.log "The Message" msg of 하면 update 함수가 호출 될 때마다 현재 메시지가 콘솔에 기록되지만 다른 내용은 변경되지 않습니다.

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 년 7 월) 당시 elm-reactor 는 일시적으로 여행 기능을 제거했습니다. 그래도 jinjor/elm-time-travel 패키지를 사용하면 얻을 수 있습니다.

사용법은 Html.App 또는 Navigation 모듈의 program* 함수를 미러링합니다 (예 Html.App .

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 표현을 구현하는 중일 때 사용됩니다. 예기치 않은 입력에 Maybe 또는 Result 유형을 사용하는 대신 Debug.crash 를 사용하는 것은 권장 되지 않지만 일반적으로 개발 과정에서만 (예 : 일반적으로 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