खोज…


वाक्य - विन्यास

  • Debug.log "टैग" anyValue

टिप्पणियों

Debug.log दो पैरामीटर लेता है, कंसोल में डिबग आउटपुट को टैग करने के लिए एक String (ताकि आप जानते हैं कि यह कहां से आ रहा है / संदेश क्या मेल खाता है), और किसी भी प्रकार का मान। Debug.log टैग और जावास्क्रिप्ट कंसोल के मान को लॉग करने के साइड-इफेक्ट को निष्पादित करता है, और उसके बाद मान लौटाता है। जेएस में कार्यान्वयन कुछ इस तरह दिख सकता है:

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

जावास्क्रिप्ट में निहितार्थ रूपांतरण हैं, इसलिए उपरोक्त कोड के काम करने के लिए value को स्पष्ट रूप से String परिवर्तित करने की आवश्यकता नहीं है। हालाँकि, एल्म प्रकारों को स्पष्ट रूप से 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 या 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 साथ पैकेज स्थापित करने के बाद।)

परिणामस्वरूप आपके ऐप का इंटरफ़ेस बदल जाता है, डेमो में से एक देखें

0.18.0

संस्करण ०.१ you.० के बाद से आप बस अपने कार्यक्रम को --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 का उपयोग करता है)।

क्रैश करते समय दिखाने के लिए त्रुटि संदेश, Debug.crash एक String मान लेता है। ध्यान दें कि एल्म भी उत्पादन मॉड्यूल के नाम और दुर्घटना की लाइन है, और अगर दुर्घटना एक में है case अभिव्यक्ति, इसके बारे में मूल्य का संकेत देगा case



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow