Elm:
ডিবাগ আউটপুট প্রিন্ট করা
কিভাবে:
এলমে কিছু ভাষার মতো বিল্ট-ইন print
ফাংশন নেই, তবে কনসোল আউটপুটের জন্য আপনি Debug
মডিউল ব্যবহার করতে পারেন:
import Debug
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
model
|> Debug.log "model before update"
|> actualUpdateFunction msg
|> Debug.log "model after update"
আপনি আপনার ব্রাউজারের কনসোলে এরকম কিছু দেখতে পাবেন:
model before update: { ... some model data ... }
model after update: { ... some updated model data ... }
মনে রাখবেন, Debug.log
ফাংশন খুব উপকারী, তবে এটি দিয়ে আপনার কোড শিপ করবেন না। এলম আপনাকে মনে করিয়ে দেবে প্রোডাকশন বিল্ড তৈরি করার আগে ডিবাগ স্টেটমেন্টগুলি সরাতে।
গভীর ডুব
Debug.log
হল এলমের Debug
মডিউলের একটি অংশ, যা শুধুমাত্র ডেভেলপমেন্ট-টাইম সাহায্যের জন্য ডিজাইন করা হয়েছে। ঐতিহাসিভাবে, এলম মেনটেইনেবিলিটি এবং এরর হ্যান্ডলিংয়ের ওপর জোর দিয়েছে, Debug
মডিউলকে ইচ্ছাকৃতভাবে সাধারণ রেখেছে। এটির সাধারণতা নিশ্চিত করে যে ডেভেলপাররা অর্থপূর্ণ আউটপুটের ওপর নজর রাখবে বিস্তৃত ডিবাগিং স্যুটে হারিয়ে যাওয়ার পরিবর্তে।
এলমের Debug.log
ফাংশন দুটি আর্গুমেন্ট নেয়: একটি স্ট্রিং ট্যাগ এবং লগ আউট করার ডাটা। তারপর আউটপুট ব্রাউজার কনসোলে প্রিন্ট করা হয়। এই প্রক্রিয়ার বিকল্পগুলি হলঃ
- ট্র্যাডিশনাল কনসোল লগিং: এলম শূন্য রানটাইম এক্সেপশনের লক্ষ্যে নিয়োজিত এর স্থাপত্যের কারণে সরাসরি কনসোল লগিং সমর্থন করে না, এবং সরাসরি লগিং এই গ্যারান্টি ভেঙে দিতে পারে।
- এলমের টাইম-ট্রাভেলিং ডিবাগার: এই টুলটি আপনাকে কনসোল লগ ছাড়াই আপনার অ্যাপ্লিকেশনের অবস্থা সময়ের সাথে সাথে দৃশ্যমান করতে দেয় এবং জটিল অ্যাপগুলি ডিবাগ করার একটি শক্তিশালী উপায়।
বাস্তবায়নের দিক থেকে, Debug.log
ফাংশন আপনার ডেটাকে একটি আইডেন্টিফায়ার ট্যাগের সাথে মোড়ানো করে। বিভিন্ন ডেটা পয়েন্টগুলি আলাদা করতে এটি উপকারী। প্রোডাকশনে, এলম কম্পাইলার যেকোনো Debug.log
ব্যবহারে চিহ্নিত করবে, নিশ্চিত করে যে আপনি আপনার প্রোডাকশন কোডকে ডিবাগিং আর্টিফ্যাক্টগুলি থেকে পরিষ্কার রাখবেন।
দেখুন আরও
- এলমের অফিসিয়াল গাইডে ডিবাগিং: https://guide.elm-lang.org/debugging/
- টাইম-ট্রাভেলিং ডিবাগার পরিচিতি: https://elm-lang.org/news/the-perfect-bug-report
- এলম ডিবাগ মডিউল ডকুমেন্টেশন: https://package.elm-lang.org/packages/elm/core/latest/Debug