ব্যবহার ও উদাহরণ
Bnlang-এর সংক্ষিপ্ত পরিচয় — প্রতিটি স্নিপেট সরাসরি bnl <file>.bnl দিয়ে চলে।
হ্যালো, ওয়ার্ল্ড
print("Hello, World!");
চালান:
bnl hello.bnl
ভ্যারিয়েবল এবং বেসিক টাইপ
Bnlang-এ একটিই ডিক্লেয়ারেশন কীওয়ার্ড: var। মান ডায়নামিকালি টাইপড কিন্তু পূর্বানুমানযোগ্য।
var name = "আলিস";
var age = 25;
var is_admin = true;
var nothing = null;
var items = [1, 2, 3];
var user = { id: 1, name: "আলিস" };
print(name, age, is_admin);
print("items:", items.length);
print("user id:", user.id);
কন্ট্রোল ফ্লো
var score = 85;
if (score >= 80) {
print("গ্রেড: A+");
} else if (score >= 70) {
print("গ্রেড: A");
} else {
print("গ্রেড: A-এর নিচে");
}
লুপ
// for ... of — একটি লিস্ট ইটারেট
for (var n of [1, 2, 3, 4, 5]) {
print(n);
}
// সাধারণ while
var i = 0;
while (i < 3) {
print("tick", i);
i = i + 1;
}
C-স্টাইলের for (i = 0; i < n; i++) লুপ নেই, ++/-- নেই। একটি list-এর উপর for ... of, অথবা counter-চালিত loop-এর জন্য while ব্যবহার করুন। দু'টোতেই break ও continue কাজ করে।
ফাংশন
function greet(name) {
return "হ্যালো, " + name + "!";
}
print(greet("আলিস"));
ফাংশন ফিক্সড-অ্যারিটি — কোনো ডিফল্ট নেই, কোনো ওভারলোড নেই, কোনো varargs নেই। ভিন্ন শেপ দরকার হলে আলাদা নামের ফাংশনে ভাগ করুন।
স্ট্যান্ডার্ড লাইব্রেরি ইমপোর্ট
import "io" as io;
import "path" as path;
var text = io.read_file("notes.txt");
print("read", text.byte_length, "bytes from", path.basename("notes.txt"));
Async (কলব্যাক-স্টাইল)
কোনো async/await কীওয়ার্ড নেই। Async I/O একটি ফাইনাল কলব্যাক নেয় যা কাজ শেষ হলে ফায়ার হয়:
import "io" as io;
io.read_file_async("notes.txt", function (err, data) {
if (err != null) {
print("read failed:", err);
return;
}
print("got", data.byte_length, "bytes");
});
print("scheduled");
একাধিক async স্টেপ কম্পোজ করতে async লাইব্রেরি ব্যবহার করুন:
import "async" as async;
async.parallel([
function (cb) { io.read_file_async("a.txt", cb); },
function (cb) { io.read_file_async("b.txt", cb); }
], function (err, results) {
print("got", results.length, "files");
});
এরর হ্যান্ডলিং
function divide(a, b) {
if (b == 0) { throw "divide by zero"; }
return a / b;
}
try {
print(divide(10, 0));
} catch (e) {
print("caught:", e);
} finally {
print("done");
}
একটি ছোট ওয়েব সার্ভার
import "web" as web;
var app = web.app();
app.get("/", function (req) { return "Hello from Bnlang!"; });
app.get("/echo/:name", function (req) {
return "Hi, " + req.params.name;
});
app.listen({ port: 3000 });
এটাই হলো ভাষা এন্ড-টু-এন্ড। মডিউল রেফারেন্স এবং সিনট্যাক্স বিস্তারিতের জন্য বাকি ডক্স ও কীওয়ার্ড পেজ ঘুরে দেখুন।