IO

IO মধ্যে Elixir

১টি অনুশীলনী

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 শিখুন