WebAssembly এর মাধ্যমে Function Parameters এবং Return Values
WebAssembly (WASM) কোডে ফাংশন ডিফাইন করার সময়, আপনাকে parameters (প্যারামিটার) এবং return values (রিটার্ন ভ্যালু) সম্পর্কে চিন্তা করতে হয়। WebAssembly একটি স্ট্যাটিক টাইপিং ভাষা হওয়ায়, এটি প্যারামিটার এবং রিটার্ন ভ্যালুগুলোর টাইপ সঠিকভাবে নির্ধারণ করে এবং সেগুলি ফাংশনের মধ্যে পরিচালনা করে।
এখানে আমরা দেখব কীভাবে WebAssembly তে ফাংশন প্যারামিটার এবং রিটার্ন ভ্যালু ব্যবহৃত হয়।
1. WebAssembly তে ফাংশন প্যারামিটার এবং রিটার্ন ভ্যালু
1.1 WebAssembly এর Function Declaration
WebAssembly তে ফাংশন ডিফাইন করার সময়, আপনি ফাংশনের প্যারামিটার এবং রিটার্ন টাইপ উল্লেখ করেন। এটি param এবং result কিওয়ার্ড ব্যবহার করে করা হয়।
উদাহরণ:
(func $add (param $a i32) (param $b i32) (result i32)
(i32.add
(local.get $a)
(local.get $b)
)
)এই উদাহরণে:
- ফাংশন
$addদুটি 32-বিট পূর্ণসংখ্যা (i32) প্যারামিটার হিসেবে গ্রহণ করে। i32.addইনস্ট্রাকশনটি দুটি প্যারামিটার যোগ করে।- ফাংশনটি একটি 32-বিট পূর্ণসংখ্যা (
i32) রিটার্ন করে।
2. Parameters এবং Return Values ব্যবহার
WebAssembly কোডে ফাংশন প্যারামিটার এবং রিটার্ন ভ্যালু ব্যবহার করার সময়, প্যারামিটারগুলোর মান ফাংশনের মধ্যে স্থানান্তরিত হতে হয়, এবং রিটার্ন ভ্যালু কোডের বাইরে পাঠানো হয়। চলুন এই বিষয়টিকে আরও বিস্তারিতভাবে দেখি।
2.1 ফাংশন প্যারামিটার
ফাংশনের প্যারামিটার WebAssembly তে param কিওয়ার্ড দিয়ে ডিফাইন করা হয়। উদাহরণস্বরূপ, যদি একটি ফাংশন দুটি পূর্ণসংখ্যা গ্রহণ করে, তাহলে সেই ফাংশনটি এইভাবে ডিফাইন করা হবে:
(func $multiply (param $x i32) (param $y i32) (result i32)
(i32.mul
(local.get $x)
(local.get $y)
)
)এখানে:
$xএবং$yহলো ফাংশনের প্যারামিটার।i32.mulদুটিi32মানকে গুণ করে এবং ফলাফল প্রদান করে।
2.2 ফাংশন রিটার্ন ভ্যালু
WebAssembly তে ফাংশন থেকে মান রিটার্ন করতে result কিওয়ার্ড ব্যবহার করা হয়। উদাহরণস্বরূপ:
(func $add (param $a i32) (param $b i32) (result i32)
(i32.add
(local.get $a)
(local.get $b)
)
)এখানে:
i32.addদুটিi32প্যারামিটারকে যোগ করে এবং একটিi32রিটার্ন করে।
2.3 ফাংশন কল এবং রিটার্ন ভ্যালু এক্সেস
একটি ফাংশন কল করার সময়, আপনি ফাংশন প্যারামিটার প্রদান করবেন এবং রিটার্ন ভ্যালু গ্রহণ করবেন। উদাহরণ:
(func $call_add (result i32)
(call $add (i32.const 5) (i32.const 7))
)এখানে:
$call_addফাংশন$addফাংশন কল করছে এবং দুটি ইনপুট (i32.const 5এবংi32.const 7) পাঠাচ্ছে।$addফাংশন দুটি প্যারামিটার যোগ করে এবং একটি 32-বিট পূর্ণসংখ্যা রিটার্ন করবে, যা$call_addফাংশনে ফেরত আসবে।
3. Complete Example: Parameters and Return Values in WebAssembly
এখানে একটি পূর্ণ উদাহরণ দেওয়া হলো যেখানে একটি WebAssembly মডিউল ফাংশন প্যারামিটার গ্রহণ করে এবং রিটার্ন ভ্যালু প্রদান করে:
(module
(func $multiply (param $x i32) (param $y i32) (result i32)
(i32.mul
(local.get $x)
(local.get $y)
)
)
(func $add (param $a i32) (param $b i32) (result i32)
(i32.add
(local.get $a)
(local.get $b)
)
)
(export "multiply" (func $multiply))
(export "add" (func $add))
)এখানে:
$multiplyফাংশন দুটি 32-বিট পূর্ণসংখ্যা (integers) গ্রহণ করে এবং তাদের গুণফল রিটার্ন করে।$addফাংশন দুটি 32-বিট পূর্ণসংখ্যা গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।- উভয় ফাংশনই
exportকরা হয়েছে যাতে বাইরের কোড তাদের কল করতে পারে।
4. JavaScript এর মাধ্যমে WebAssembly ফাংশন কল
WebAssembly মডিউল থেকে JavaScript কোডে ফাংশন কল করা এবং রিটার্ন ভ্যালু গ্রহণ করা সম্ভব। উদাহরণ:
fetch('your_module.wasm')
.then(response => response.arrayBuffer())
.then(bytes => WebAssembly.instantiate(bytes))
.then(wasmModule => {
const { multiply, add } = wasmModule.instance.exports;
// ফাংশন কল এবং রিটার্ন ভ্যালু গ্রহণ
const result1 = multiply(5, 3); // 15
const result2 = add(7, 8); // 15
console.log('Multiply Result:', result1);
console.log('Add Result:', result2);
})
.catch(console.error);এখানে:
- WebAssembly মডিউলটি JavaScript কোডে লোড হচ্ছে।
- WebAssembly ফাংশন
$multiplyএবং$addJavaScript থেকে কল করা হচ্ছে এবং তাদের রিটার্ন ভ্যালু গ্রহণ করা হচ্ছে।
সারসংক্ষেপ
WebAssembly তে ফাংশন প্যারামিটার এবং রিটার্ন ভ্যালু ব্যবহারের জন্য আপনি param এবং result কিওয়ার্ড ব্যবহার করেন। WebAssembly ফাংশন প্যারামিটার গ্রহণ করে এবং নির্দিষ্ট টাইপের রিটার্ন ভ্যালু প্রদান করে। JavaScript এর মাধ্যমে WebAssembly মডিউল থেকে ফাংশন কল করা যায় এবং তাদের রিটার্ন ভ্যালু ব্যবহার করা সম্ভব। WebAssembly তে ফাংশন প্যারামিটার এবং রিটার্ন ভ্যালু ব্যবহারের মাধ্যমে আপনি শক্তিশালী এবং কার্যকরী ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more