Elm Language
デバッグ
サーチ…
構文
- 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 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年7月)の時点で、 elm-reactorは一時的に走行機能を剥奪されました。ただし、 jinjor/elm-time-travelパッケージを使用して取得することは可能です。
それは、 Html.AppやNavigationモジュールの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以降では、プログラムを--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は1つのString値をとります。これはクラッシュ時に表示されるエラーメッセージです。 Elmはモジュールの名前とクラッシュの行も出力し、クラッシュがcase式にあるcaseは、 case値を示します。