Introduction: সবাইকে স্বাগতম! আজকের এই কন্টেন্টে আমরা রাস্ট (Rust) প্রোগ্রামিং ল্যাঙ্গুয়েজের অন্যতম গুরুত্বপূর্ণ একটি বিষয়—ফাংশন (Functions) সম্পর্কে শিখবো। সহজ কথায় বলতে গেলে, ফাংশন হলো কিছু কোডের সমষ্টি যা নির্দিষ্ট কোনো কাজ করার জন্য তৈরি করা হয়। আমরা জানবো কীভাবে ফাংশন লিখতে হয়, কীভাবে ডাটা পাস করতে হয় এবং ফাংশন থেকে কীভাবে কোনো রেজাল্ট ফেরত বা 'রিটার্ন' নিতে হয়।
১. ফাংশন এবং মেইন (Main) ফাংশন কি?
ভিডিও রেফারেন্স: [00:16]
রাস্ট ল্যাঙ্গুয়েজে ফাংশন খুব বেশি ব্যবহৃত হয়। আপনি যখনই একটি রাস্ট প্রোগ্রাম লিখবেন, সেখানে অন্তত একটি ফাংশন থাকতেই হবে, যার নাম হলো main ফাংশন। এটি হলো প্রোগ্রামের শুরু বা এন্ট্রি পয়েন্ট।
বিস্তারিত: ফাংশন বানানোর জন্য রাস্ট-এ fn কিওয়ার্ড ব্যবহার করা হয়। মনে রাখবেন, রাস্ট-এ ফাংশনের নাম লেখার সময় Snake Case (যেমন: my_function_name) ফলো করা ভালো। মানে সব অক্ষর ছোট হাতের হবে এবং শব্দগুলোর মাঝখানে আন্ডারস্কোর (_) থাকবে।
- সহজ ব্যাখা (Snake Case): এটি কোড লেখার একটি স্টাইল। যেমন আমরা সাধারণত "MyFunction" লিখি, কিন্তু স্নেক কেসে এটি হবে "my_function"।
২. ফাংশন ডিক্লেয়ারেশন এবং কল করা
ভিডিও রেফারেন্স: [02:29]
ফাংশন শুধু লিখে রাখলেই কাজ করে না, একে 'কল' বা ডাকতে হয়।
Rust
fn main() {
println!("হ্যালো মেইন ফাংশন থেকে!");
my_function(); // এখানে ফাংশনটিকে কল করা হয়েছে
}
fn my_function() {
println!("হ্যালো মাই ফাংশন থেকে!");
}
কোড ব্যাখ্যা: এখানে fn my_function() দিয়ে একটি ফাংশন তৈরি করা হয়েছে। আর main ফাংশনের ভেতর থেকে যখন my_function() লিখলাম, তখনই সে কাজ শুরু করল। আপনি চাইলে একটি ফাংশনকে যতবার ইচ্ছা কল করতে পারেন।
৩. প্যারামিটার এবং আর্গুমেন্ট (Parameters & Arguments)
ভিডিও রেফারেন্স: [08:04]
মাঝে মাঝে ফাংশনকে কিছু ডাটা দিতে হয় কাজ করার জন্য। যেমন একটি ফাংশন যদি দুটি সংখ্যা যোগ করে, তবে তাকে সংখ্যা দুটি তো দিতে হবে! এই ইনপুটগুলোকে বলা হয় প্যারামিটার।
বিস্তারিত: ফাংশন যখন ডিফাইন করা হয়, তখন আমরা বলে দেই সে কী ধরনের ডাটা নেবে। রাস্ট-এ প্যারামিটারের টাইপ (যেমন: i32 বা bool) বলে দেওয়া বাধ্যতামূলক।
- সহজ ব্যাখা (i32): এটি রাস্ট-এ একটি সাধারণ পূর্ণসংখ্যা (Integer) ডাটা টাইপ।
Rust
fn main() {
print_number(10); // ১০ হলো এখানে আর্গুমেন্ট
}
fn print_number(x: i32) { // x: i32 হলো প্যারামিটার
println!("সংখ্যাটি হলো: {}", x);
}
৪. স্টেটমেন্ট বনাম এক্সপ্রেশন (Statements vs Expressions)
ভিডিও রেফারেন্স: [13:02]
এটি রাস্টের একটি চমৎকার কনসেপ্ট। রাস্ট একটি 'Expression Based' ল্যাঙ্গুয়েজ।
-
Statement (স্টেটমেন্ট): এটি শুধু একটা নির্দেশ যা কোনো মান ফেরত দেয় না। যেমন:
let y = 6;এর শেষে সেমিকোলন (;) থাকে। -
Expression (এক্সপ্রেশন): এটি কোনো কিছু হিসাব করে একটি মান তৈরি করে। যেমন:
5 + 5যা ১০ তৈরি করে। এক্সপ্রেশনের শেষে সাধারণত সেমিকোলন থাকে না।
৫. ফাংশন থেকে মান রিটার্ন করা (Returning Values)
ভিডিও রেফারেন্স: [22:25]
ফাংশন কাজ শেষ করে যখন আমাদের কোনো রেজাল্ট দেয়, তাকে রিটার্ন করা বলে। রিটার্ন টাইপ বোঝাতে আমরা তীরের মতো চিহ্ন -> ব্যবহার করি।
Rust
fn main() {
let result = add_numbers(5, 10);
println!("যোগফল হলো: {}", result);
}
fn add_numbers(x: i32, y: i32) -> i32 {
x + y // এখানে কোনো সেমিকোলন নেই, তাই এটি সরাসরি রিটার্ন হবে
}
কোড ব্যাখ্যা: এখানে -> i32 মানে হলো এই ফাংশনটি একটি পূর্ণসংখ্যা ফেরত দেবে। শেষ লাইনে x + y লিখেছি কিন্তু সেমিকোলন দেইনি, তাই রাস্ট বুঝে নিয়েছে এটাই রিটার্ন করতে হবে।
- সহজ ব্যাখা (Return Early): অনেক সময় কাজ শেষ হওয়ার আগেই ফাংশন থেকে বের হয়ে যেতে হয়। তখন
returnকিওয়ার্ড ব্যবহার করা হয়।
বিশ্লেষণ ও আমার ভাবনা
কন্টেন্ট ক্রিয়েটর এখানে রাস্টের ফাংশনকে খুব সহজভাবে বুঝিয়েছেন। রাস্টের একটি বড় বৈশিষ্ট্য হলো এর টাইপ সেফটি—মানে আপনাকে আগে থেকেই বলে দিতে হবে আপনি কী ডাটা নিয়ে কাজ করছেন। এতে ভুল হওয়ার সম্ভাবনা কমে যায়।
বাস্তবসম্মত উপলব্ধি: অনেকে শুরুতে 'Expression' আর 'Statement' এর পার্থক্য নিয়ে গোলমাল করে ফেলে। মনে রাখবেন, যদি সেমিকোলন দেন, তবে সেটি একটি স্টেটমেন্ট হয়ে যায় এবং কোনো মান রিটার্ন করে না। রাস্ট-এ ফাংশনের শেষ লাইনে সেমিকোলন না দিয়ে সরাসরি রেজাল্ট লেখাটা অনেক দ্রুত এবং ক্লিন কোড লেখার উপায়।
বিকল্প ও পরামর্শ: আপনি যদি সি (C) বা জাভা (Java) থেকে আসেন, তবে আপনার হয়তো বারবার return লিখতে ইচ্ছা করবে। কিন্তু রাস্ট-এ ইমপ্লিসিট রিটার্ন (সেমিকোলন ছাড়া শেষ লাইন) ব্যবহার করাটাই স্ট্যান্ডার্ড। এটি আপনার কোডকে আরও ছোট এবং পড়তে সহজ করবে।
চেষ্টা করে দেখুন: নিজে একটি ফাংশন লিখুন যা আপনার নাম প্রিন্ট করবে অথবা দুটি বড় সংখ্যার গুণফল বের করবে। বারবার প্র্যাকটিস করলে রাস্টের এই স্টাইলটি আপনার কাছে খুব সহজ হয়ে যাবে!
[
Functions in Rust | Rust Book
Piyush Garg · 4.9K views
](http://www.youtube.com/watch?v=lvwa9yV5oSM)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d