সরাসরি প্রধান সামগ্রীতে চলে যান

Rust-এ মেথড সিনট্যাক্স এবং এসোসিয়েটেড ফাংশন এর সহজ গাইড

এই ভিডিওতে পিয়ুষ গর্গ আমাদের শিখিয়েছেন কীভাবে Rust প্রোগ্রামিং ল্যাঙ্গুয়েজে Struct-এর সাথে Methods এবং Associated Functions ব্যবহার করতে হয়। সহজ কথায়, কোনো একটি ডাটা স্ট্রাকচারের সাথে সম্পর্কিত কাজগুলোকে কীভাবে গুছিয়ে লেখা যায়, সেটাই এখানে দেখানো হয়েছে।


১. মেথড কী এবং ফাংশনের সাথে এর পার্থক্য

ভিডিওর শুরুতে মেথড সম্পর্কে ধারণা দেওয়া হয়েছে।

ভিডিও রেফারেন্স: [00:20]

বিস্তারিত আলোচনা: মেথড অনেকটা সাধারণ ফাংশনের মতোই, যা fn কিওয়ার্ড দিয়ে শুরু হয়। কিন্তু মূল পার্থক্য হলো, মেথড সবসময় একটি Struct-এর ভেতর ডিফাইন করা হয়।

  • ফাংশন: এটি স্বাধীনভাবে যেকোনো জায়গায় থাকতে পারে।

  • মেথড: এটি একটি নির্দিষ্ট জিনিসের (Struct) ভেতরে থাকে এবং সেই জিনিসের ডাটা নিয়ে কাজ করে।

সহজ কথায়: ফাংশন হলো একটি সাধারণ কাজ, আর মেথড হলো কোনো নির্দিষ্ট বস্তুর নিজস্ব কাজ। যেমন: "খাওয়া" একটি কাজ (ফাংশন), কিন্তু "বিড়ালের খাওয়া" হলো বিড়ালের একটি মেথড।

কঠিন শব্দের ব্যাখ্যা: * Context (কনটেক্সট): মানে হলো পরিপ্রেক্ষিত বা কার অধীনে আছে। এখানে মেথড Struct-এর অধীনে থাকে।


২. impl ব্লক এবং মেথড তৈরি করা

মেথড তৈরি করতে হলে আমাদের impl (Implementation) ব্লক ব্যবহার করতে হয়।

ভিডিও রেফারেন্স: [01:21]

কোড উদাহরণ: ```rust struct Rectangle { width: u32, height: u32, }

impl Rectangle { // এটি একটি মেথড fn calculate_area(&self) -> u32 { self.width * self.height } }

কোড ব্যাখ্যা: এখানে impl Rectangle ব্লকের ভেতরে আমরা calculate_area নামে একটি মেথড বানিয়েছি। এটি Rectangle-এর ক্ষেত্রফল বের করে দেয়।

**সহজভাবে `&self` কী?** মেথডের প্রথম প্যারামিটার সবসময় `self` হয়। এটি দিয়ে প্রোগ্রাম বুঝতে পারে যে আমরা ঠিক কোন Rectangle-এর কথা বলছি। যদি আমাদের কাছে দুটি রেক্ট্যাঙ্গেল থাকে, তবে `self` বর্তমান রেক্ট্যাঙ্গেলের ডাটা (width, height) ব্যবহার করবে।  

---

### ৩. একাধিক প্যারামিটার সহ মেথড  

মেথড শুধু নিজের ডাটা নয়, বাইরে থেকেও ডাটা বা অন্য কোনো Struct নিতে পারে।  

**ভিডিও রেফারেন্স:** [[09:41](http://www.youtube.com/watch?v=-PIjo-ebX-o&t=581)]  

**কোড উদাহরণ:** ```rust
impl Rectangle {
    fn can_hold(&self, other: &Rectangle) -> bool {
        self.width > other.width && self.height > other.height
    }
} 

কোড ব্যাখ্যা: এখানে can_hold মেথডটি চেক করছে যে একটি রেক্ট্যাঙ্গেল কি অন্য একটি রেক্ট্যাঙ্গেলকে নিজের ভেতরে জায়গা দিতে পারবে কি না। এটি নিজের self ডাটার সাথে অন্য একটি রেক্ট্যাঙ্গেলের (other) ডাটা তুলনা করছে।


৪. এসোসিয়েটেড ফাংশন (Associated Functions)

এমন কিছু ফাংশন আছে যেগুলো Struct-এর ভেতরে থাকে কিন্তু self ব্যবহার করে না। এদের মেথড না বলে এসোসিয়েটেড ফাংশন বলা হয়।

ভিডিও রেফারেন্স: [12:19]

বিস্তারিত আলোচনা: এগুলো সাধারণত নতুন কোনো অবজেক্ট তৈরি করতে ব্যবহৃত হয় (যাকে কনস্ট্রাক্টর বলা হয়)। যেমন Rust-এর String::from("hello") এখানে from হলো একটি এসোসিয়েটেড ফাংশন।

সহজ কথায়: মেথড কল করতে object.method() লিখতে হয়, কিন্তু এসোসিয়েটেড ফাংশন কল করতে StructName::function() লিখতে হয় (ডাবল কোলন :: ব্যবহার করে)।

কঠিন শব্দের ব্যাখ্যা: * Static Function (স্ট্যাটিক ফাংশন): অন্যান্য প্রোগ্রামিং ভাষায় একে স্ট্যাটিক ফাংশন বলে, যা কোনো নির্দিষ্ট বস্তুর ওপর নির্ভর করে না, বরং পুরো ক্লাসের বা টাইপের ওপর নির্ভর করে।


আমার বিশ্লেষণ ও চিন্তা

এই ভিডিও থেকে বোঝা যায় যে কোডকে সুন্দরভাবে সাজানোর জন্য impl ব্লক কতটা জরুরি।

বাস্তব প্রেক্ষাপট ও সম্ভাবনা: ১. অর্গানাইজেশন: আপনার কোড যদি এলোমেলো ফাংশনে ভরা থাকে, তবে তা পড়া কঠিন। Struct এবং Method ব্যবহার করলে কোড অনেক বেশি পরিষ্কার এবং পেশাদার মনে হয়।

২. পাবলিক বনাম প্রাইভেট: ভিডিওতে ইঙ্গিত দেওয়া হয়েছে যে ভবিষ্যতে আমরা দেখব কীভাবে মেথড ব্যবহার করে ডাটাকে সুরক্ষিত রাখা যায় (Getters and Setters)।

পরামর্শ: আপনি যদি বিগিনার হন, তবে শুধু ফাংশন না লিখে Rust-এ সবসময় ছোট ছোট Struct বানিয়ে তার জন্য impl ব্লক লেখার অভ্যাস করুন। এটি আপনার লজিককে ডাটার সাথে যুক্ত রাখতে সাহায্য করবে।

বিকল্প চিন্তা: অনেক সময় আমরা একই কাজের জন্য অনেকগুলো impl ব্লক ব্যবহার করতে পারি, যা Rust সাপোর্ট করে। তবে বড় প্রজেক্টে সব মেথড এক জায়গায় না রেখে লজিক অনুযায়ী আলাদা আলাদা ব্লকে রাখলে কোড মেনটেইন করা সহজ হয়।

সবশেষে, ডাটা এবং কাজকে আলাদা না রেখে একসাথে গুছিয়ে রাখাই হলো এই ভিডিওর মূল শিক্ষা। [18:20]

[

Method Syntax | Rust Book

Piyush Garg · 2.9K views

](http://www.youtube.com/watch?v=-PIjo-ebX-o)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...