サーチ…


構文

  • Debug.log "タグ" anyValue

備考

Debug.logは、コンソールのデバッグ出力にタグを付けるString 2つのパラメータがあります)と、どのタイプの値でも指定できます。 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 、更新関数が呼び出されるたびに現在のメッセージがコンソールに記録されるが、何も変更されない。

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.AppNavigationモジュールのprogram*関数の使用法を反映しています(例:

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使ってパッケージをインストールした後)

アプリケーションのインターフェースが変更されますデモの1つを参照してください

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式を実装しているときに使用されます。予期しない入力に対してMaybeResult型を使用する代わりにDebug.crashを使用することは推奨されませんが、通常は開発中のみ(通常はDebug.crashを使用するElmコードを公開しません)。

Debug.crashは1つのString値をとります。これはクラッシュ時に表示されるエラーメッセージです。 Elmはモジュールの名前とクラッシュの行も出力し、クラッシュがcase式にあるcaseは、 case値を示します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow