Inherited from v1.0.0

আমদানি / যেমন কীওয়ার্ড

import কারেন্ট ফাইলে একটি মডিউল আনে। as এটিকে একটি লোকাল নামে বাইন্ড করে। একসাথে এটি দেখতে import "name" as alias;। বাংলা রূপ আমদানিযেমন

সিনট্যাক্স

import "<name>" as <alias>;

import-এর পরের স্ট্রিং সিলেক্ট করে কী লোড হবে। as-এর পরের identifier হলো মেম্বার অ্যাক্সেসের জন্য লোকাল নাম।

স্ট্যান্ডার্ড লাইব্রেরি

import "io"     as io;
import "path"   as path;
import "web"    as web;
import "async"  as async;

var text = io.read_file(path.join(["docs", "intro.md"]));
print(text);

স্ট্যান্ডার্ড লাইব্রেরি মডিউল (io, path, web, request, async, template, sqlite, pg, mongo, crypto, json, regex, time, timers, math, random, log, dotenv, cli, test, …) রানটাইমের সাথে শিপ — কোনো ইনস্টলেশন দরকার নেই।

BPM দিয়ে ইনস্টল করা প্যাকেজ

import "some-package" as pkg;
print(pkg.hello());

bpm install some-package প্যাকেজকে ./deps/some-package/-এ ড্রপ করে, এবং import resolver সেখানে খুঁজে পায়। প্যাকেজের এন্ট্রি পয়েন্ট তার bnl.json-এ ডিক্লেয়ার্ড ("main": "src/index.bnl")।

নেটিভ প্লাগইন

নেটিভ মডিউল — bnl-এর C প্লাগইন কন্ট্রাক্ট implement করা .dll / .so / .dylib শেয়ার্ড লাইব্রেরি — সরাসরি পাথ দিয়ে বা bpm দিয়ে install করে নাম দিয়ে import করা যায়। প্লাগইন একটি একক drop-in C হেডার (bnl/plugin.h) ব্যবহার করে এবং C, C++, Rust, Go, Zig, বা C FFI সমর্থিত যেকোনো ভাষায় লেখা যায়। সম্পূর্ণ গাইডের জন্য প্লাগইন ডেভেলপমেন্ট দেখুন।

// সরাসরি পাথ (স্ক্রিপ্ট .dll-এর পাশে):
import "./build/bin/mathx.dll" as m;

print(m.cube(3));      // নেটিভ cube() কল
print(m.hypot(5, 12));

// bpm দিয়ে install করা (deps/my-plugin/bnl.json দিয়ে resolve হয়):
import "my-plugin" as p;
print(p.greet("world"));

একটি নেটিভ dep-এর bnl.json তার native ফিল্ডে শেয়ার্ড লাইব্রেরির ফাইলনেম declare করে; import resolver pure-bnl dep-এর মতোই এটি খুঁজে পায়।

Renaming

as ব্যবহার করে একটি ছোট বা প্রাসঙ্গিক নাম বেছে নিন:

import "request" as req;
import "io"      as fs;        // এই ফাইলে যা পড়তে ভালো লাগে সেটাই দিন

req.get("https://example.com", function (err, resp) { /* ... */ });
fs.read_file("notes.txt");

নোট

  • import-এর পরের স্ট্রিং একটি literal — এটি রানটাইম expression হতে পারে না। Import statically resolve হয়।
  • প্রতিটি import ঠিক একটি alias ডিক্লেয়ার করে। কোনো multi-name বা wildcard import নেই।
  • Import top-level। একটি ফাংশন বা if ব্লকের ভেতরে import রাখবেন না।

বাংলা রূপ

আমদানি "io"   যেমন io;
আমদানি "path" যেমন path;

চলক text = io.read_file(path.join(["docs", "intro.md"]));
print(text);