Elm Language
डिबगिंग
खोज…
वाक्य - विन्यास
- 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
समय यात्रा डिबगर
लेखन के समय (जुलाई 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 साथ पैकेज स्थापित करने के बाद।)
परिणामस्वरूप आपके ऐप का इंटरफ़ेस बदल जाता है, डेमो में से एक देखें ।
संस्करण ०.१ 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 ।