Rust এ Methods এবং Associated Functions

Functions এবং Methods (ফাংশন এবং মেথডস) - রাস্ট (Rust) - Computer Programming

289

Methods (মেথডস)

রাস্টে মেথডস হল ফাংশনগুলো যা একটি স্ট্রাকচার (struct), এনাম (enum), অথবা ট্রেট (trait) এর সাথে যুক্ত থাকে। এই ফাংশনগুলো সাধারণত self প্যারামিটার ব্যবহার করে ডেটার উপর কাজ করে। self একটি অবজেক্টের মালিকানা বা রেফারেন্স হিসেবে কাজ করে, যা ফাংশনকে সেই অবজেক্টের ডেটা অ্যাক্সেস করার অনুমতি দেয়।

মেথডের সিঙ্কট্যাক্স:

মেথডের মধ্যে self ব্যবহৃত হয় যা অবজেক্টের ইনস্ট্যান্সের উপর কাজ করে।

উদাহরণ:

struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    // একটি মেথড যা Rectangle এর ক্ষেত্রফল প্রদান করে
    fn area(&self) -> u32 {
        self.width * self.height
    }
    
    // একটি মেথড যা Rectangle এর বর্গাকার কিনা তা চেক করে
    fn is_square(&self) -> bool {
        self.width == self.height
    }
}

fn main() {
    let rect = Rectangle {
        width: 30,
        height: 30,
    };

    println!("Area: {}", rect.area()); // মেথড কল
    println!("Is square? {}", rect.is_square()); // মেথড কল
}

ব্যাখ্যা:

  • &self হচ্ছে একটি ইমিউটেবল রেফারেন্স যা অবজেক্টের ডেটা অ্যাক্সেস করে।
  • area() মেথড Rectangle এর ক্ষেত্রফল বের করে।
  • is_square() মেথড চেক করে যদি width এবং height সমান হয় তবে এটি সঠিকভাবে true রিটার্ন করবে।

Associated Functions (অ্যাসোসিয়েটেড ফাংশনস)

রাস্টে অ্যাসোসিয়েটেড ফাংশনস হল এমন ফাংশনগুলো যা একটি টাইপের সাথে যুক্ত থাকে, তবে সেগুলো কোনো ইনস্ট্যান্স ডেটা (অথবা অবজেক্টের মালিকানা) অ্যাক্সেস করে না। এই ফাংশনগুলো সাধারণত impl ব্লকের ভিতরে থাকে এবং self প্যারামিটার ব্যবহার না করে স্ট্যাটিক ফাংশন হিসেবে কাজ করে।

অ্যাসোসিয়েটেড ফাংশনস সাধারণত ফ্যাক্টরি ফাংশন হিসেবে ব্যবহৃত হয়, যেমন কোন নতুন অবজেক্ট তৈরি করা।

অ্যাসোসিয়েটেড ফাংশনের সিঙ্কট্যাক্স:

এগুলো self ছাড়া কল করা হয় এবং এই ফাংশনগুলো সাধারণত একটি টাইপের সাথে যুক্ত থাকে।

উদাহরণ:

struct Circle {
    radius: f64,
}

impl Circle {
    // একটি অ্যাসোসিয়েটেড ফাংশন যা একটি নতুন Circle তৈরি করে
    fn new(radius: f64) -> Circle {
        Circle { radius }
    }
    
    // একটি মেথড যা Circle এর ক্ষেত্রফল প্রদান করে
    fn area(&self) -> f64 {
        3.14 * self.radius * self.radius
    }
}

fn main() {
    let circle = Circle::new(10.0); // অ্যাসোসিয়েটেড ফাংশন কল
    println!("Area of the circle: {}", circle.area()); // মেথড কল
}

ব্যাখ্যা:

  • Circle::new(10.0) একটি অ্যাসোসিয়েটেড ফাংশন কল, যা একটি নতুন Circle অবজেক্ট তৈরি করে।
  • area() মেথড Circle এর ক্ষেত্রফল বের করে।

Methods vs Associated Functions

  • Methods: এই ফাংশনগুলো একটি অবজেক্টের উপর কাজ করে এবং সেগুলো self বা তার রেফারেন্স ব্যবহার করে।
  • Associated Functions: এই ফাংশনগুলো সাধারণত টাইপের সাথে যুক্ত থাকে এবং self ব্যবহারের প্রয়োজন হয় না, যেমন একটি নতুন অবজেক্ট তৈরি করা বা কোনো স্ট্যাটিক অপারেশন সম্পাদন করা।

সারাংশ:

  • Methods অবজেক্টের উপর কাজ করে এবং self ব্যবহারের মাধ্যমে ডেটাকে অ্যাক্সেস করে।
  • Associated Functions অবজেক্টের সাথে সম্পর্কিত ফাংশন, তবে এগুলো সাধারণত self ছাড়া কাজ করে এবং স্ট্যাটিক ফাংশন হিসেবেই ব্যবহৃত হয়।
Content added By
Promotion

Are you sure to start over?

Loading...