std.io and std.os
API summary (generated from the Beans source by npm run coverage): 11 package functions.
এই দুইটা নেটিভ মডিউলই টার্মিনাল আর operating system-এর সাথে মূল যোগসূত্র।
std.io ইনপুট-আউটপুট সামলায়। std.os সামলায় arguments, environment, আর exit।
দুইটাই কম্পাইলার আর runtime-এর ভেতরে বানানো, তাই পড়ার মতো কোনো stdlib/std/ সোর্স
নেই, আর এদের function-গুলো checker-এ typed হয় positional parameter দিয়ে যাদের কোনো
নাম নেই।
std.io
“std.io” সেকশনimport std.ioপ্রিন্ট করা
“প্রিন্ট করা” সেকশনprint(any)println(any)eprint(any)eprintln(any)print stdout-এ লেখে newline ছাড়া; println শেষে একটা newline যোগ করে। eprint
আর eprintln একই জিনিস, তবে stderr-এ লেখে। প্রতিটা যেকোনো type-এর একটা মাত্র value নেয়।
কী কী প্রিন্ট করা যায়:
- সংখ্যা, bool, আর string — যেমনটা আশা করা যায়;
- enum, দেখায়
variantবাvariant(payload)হিসেবে; - list, দেখায়
[a, b, c]হিসেবে।
Map, class instance, আর Result value প্রিন্ট হয় না। ওগুলো নিজে আগে ফরম্যাট করে নিতে হয়
(দেখুন std.fmt আর string interpolation)।
import std.io
fn main() { io.println("count is {3}") // count is 3 io.println([1, 2, 3]) // [1, 2, 3] io.eprintln("something went wrong")}ইনপুট পড়া
“ইনপুট পড়া” সেকশনread_line() -> Option<string>read_all() -> stringread_line stdin থেকে একটা লাইন পড়ে, আর ইনপুট শেষ হলে none ফেরত দেয়। read_all
পুরো stdin-কে একটা string হিসেবে পড়ে।
import std.io
fn main() { let line: Option<string> = io.read_line() match line { some(text) => io.println("you typed {text}"), none => {}, }}std.os
“std.os” সেকশনimport std.osargs() -> List<string>env(string) -> Option<string>exit(int)args()প্রোগ্রামের arguments দেয়।beansc run f.b -- a bচালানো হলে arguments হলো---এর পরের অংশগুলো (aআরb)। কম্পাইল করা native binary সরাসরিargvথেকে এগুলো পড়ে।env(name)nameনামের environment variable-এর value ফেরত দেয়, আর সেট করা না থাকলেnone।exit(code)প্রোগ্রামটাকেcodeexit code দিয়ে থামায়, আর কিছু ফেরত দেয় না।
import std.ioimport std.os
fn main() { for arg in os.args() { io.println(arg) } let home: Option<string> = os.env("HOME") match home { some(path) => io.println("home is {path}"), none => {}, } os.exit(0)}C errno, hosted interop-এর জন্য
“C errno, hosted interop-এর জন্য” সেকশনhosted target-এ যখন C কোড কল করা হয়, তখন std.c-এর দুইটা helper C-র
errno value পড়তে আর সেট করতে দেয়:
errno() -> i32set_errno(i32)errno()এখনকারerrnoপড়ে।set_errno(value)এটা সেট করে।
এগুলো শুধু তখনই ব্যবহার করুন যখন C interop করা হচ্ছে আর কোনো C কল যে error রেখে গেছে সেটা দেখা দরকার। দেখুন FFI guide।