IO

IO में Elixir

1 अभ्यास

IO के बारे में

इनपुट और आउटपुट संभालने वाले फंक्शन IO मॉड्यूल में दिए गए हैं।

  • IO.puts/2 मानक आउटपुट पर एक स्ट्रिंग लिखता है, और उसके बाद एक नई लाइन जोड़ता है। :ok लौटाता है।
  • IO.write/2 मानक आउटपुट पर एक स्ट्रिंग लिखता है, बिना कोई नई लाइन जोड़े। :ok लौटाता है।
  • IO.gets/2 मानक इनपुट से एक लाइन पढ़ता है।
  • IO.inspect/2 कुछ भी मानक आउटपुट पर लिखता है, और :label जैसे काम के ऑप्शन लेता है। जो वैल्यू इसे दी जाती है, उसे बिना बदले ही लौटा देता है। डीबगिंग के लिए यह बहुत उपयोगी है।

String.Chars प्रोटोकॉल

अगर आप IO.puts/2 को कोई ऐसी वैल्यू देने की कोशिश करते हैं जिसे वह प्रिंट नहीं कर सकता, तो आपको Protocol.UndefinedError एरर मिलती है।

IO.puts({:ok, 7})
# ** (Protocol.UndefinedError) protocol String.Chars not implemented for {:ok, 7} of type Tuple

ऐसा होने पर आप इसकी जगह IO.inspect/2 इस्तेमाल कर सकते हैं।

डीबगिंग के लिए IO.inspect/2

IO.inspect/2 डीबगिंग के लिए एकदम सही है, क्योंकि यह अपना आर्गुमेंट बिना बदले लौटा देता है, कुछ भी प्रिंट कर सकता है, और इसमें :label ऑप्शन भी मिलता है।

"HELLO\n"
|> String.trim()
|> IO.inspect(label: "step 1")
|> String.downcase()
|> IO.inspect(label: "step 2")

# > step 1: "HELLO"
# > step 2: "hello"
# => "hello"

IO डिवाइस

इन सभी फंक्शन का पहला आर्गुमेंट एक IO डिवाइस होता है, जिसकी डिफॉल्ट वैल्यू :stdio (मानक इनपुट/आउटपुट) होती है। मानक एरर डिवाइस पर लिखने के लिए इसकी जगह :stderr इस्तेमाल कीजिए। IO डिवाइस कोई प्रोसेस भी हो सकता है, जैसे File.open/2 को कॉल करके बनाया गया प्रोसेस, जिससे किसी फाइल में लिखा जा सकता है।

GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

IO सीखिए