Parameters এবং Return Values

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

266

Parameters (প্যারামিটারস)

রাস্টে, ফাংশনের মাধ্যমে ডেটা স্থানান্তরের জন্য প্যারামিটার ব্যবহার করা হয়। প্যারামিটারগুলি ফাংশনের ইনপুট হিসেবে কাজ করে, যা ফাংশনের ভিতরে ব্যবহৃত হতে পারে।

১.১ প্যারামিটার ডিক্লারেশন

রাস্টে, প্যারামিটারগুলির জন্য ডেটা টাইপ নির্ধারণ করতে হয়। প্যারামিটারগুলো সাধারণত ফাংশন কলের মাধ্যমে আর্গুমেন্ট হিসেবে প্রদান করা হয়। রাস্টে প্যারামিটার পাস করার সময় আপনি ডেটা কীভাবে পাস করবেন তা নির্ধারণ করতে পারেন, যেমন By value (মুল্যে পাস), By reference (রেফারেন্স পাস), বা **By mutable reference (মিউটেবল রেফারেন্স পাস)**।

১.২ By Value (মুল্যে পাস)

ডিফল্টভাবে, রাস্ট প্যারামিটারগুলি By value পাস করে, অর্থাৎ ফাংশনের ভিতরে প্যারামিটারটির একটি কপি তৈরি হয়।

fn add(x: i32, y: i32) -> i32 {
    x + y
}

fn main() {
    let result = add(5, 10);
    println!("The result is: {}", result);
}

এখানে x এবং y প্যারামিটারগুলি By value পাস করা হয়েছে। ফাংশন কল করার সময়, এই প্যারামিটারগুলির কপি ফাংশনের মধ্যে পাঠানো হয়েছে।

১.৩ By Reference (রেফারেন্স পাস)

রাস্টে আপনি ডেটার মালিকানা না বদলিয়ে ফাংশনে রেফারেন্স পাস করতে পারেন। এটি বোরোউ (borrowing) সিস্টেমের মাধ্যমে করা হয়। রেফারেন্সের মাধ্যমে প্যারামিটার পাস করলে ডেটার কপি তৈরি হয় না এবং এটি আরও দক্ষ হতে পারে।

fn print_length(s: &String) {
    println!("The length of the string is: {}", s.len());
}

fn main() {
    let str = String::from("Hello, Rust!");
    print_length(&str);  // By reference
}

এখানে s প্যারামিটারটি By reference পাস করা হয়েছে, যার ফলে মূল ডেটার মালিকানা বজায় থাকে এবং ফাংশন শুধুমাত্র রেফারেন্স ব্যবহার করে ডেটার উপর কাজ করে।

১.৪ By Mutable Reference (মিউটেবল রেফারেন্স পাস)

রাস্টে আপনি mutable reference ব্যবহার করে ডেটাকে পরিবর্তন করতে পারেন, তবে এটি রেফারেন্স পাসের সময় প্রযোজ্য হতে হবে।

fn change_value(x: &mut i32) {
    *x += 1;
}

fn main() {
    let mut num = 10;
    change_value(&mut num);  // By mutable reference
    println!("The changed value is: {}", num);
}

এখানে x প্যারামিটারটি mutable reference পাস করা হয়েছে, যার মাধ্যমে আমরা মূল ভেরিয়েবলের মান পরিবর্তন করেছি।


Return Values (রিটার্ন ভ্যালুজ)

রাস্টে, ফাংশন থেকে একটি মান (value) ফেরত দেওয়ার জন্য return কিওয়ার্ড ব্যবহার করা হয়। ফাংশনটি একটি রিটার্ন টাইপ ডিফাইন করতে হয় যা তার আউটপুট হিসেবে প্রদান করা হবে।

২.১ একটি ভ্যালু রিটার্ন করা

রাস্টে, ফাংশন এক বা একাধিক মান রিটার্ন করতে পারে, এবং এটি return কিওয়ার্ড অথবা আউটপুট টাইপ দিয়ে করা হয়। তবে, রাস্টে একটি ফাংশন সবসময় একটি মান রিটার্ন করতে হবে, বিশেষত যদি তার রিটার্ন টাইপ ডিফাইন করা থাকে।

fn multiply(x: i32, y: i32) -> i32 {
    x * y
}

fn main() {
    let result = multiply(3, 4);
    println!("The result is: {}", result);
}

এখানে multiply ফাংশনটি দুটি i32 টাইপের প্যারামিটার নেয় এবং একটি i32 মান রিটার্ন করে।

২.২ অপশনাল রিটার্ন (Option Type)

কখনও কখনও ফাংশন এমন একটি মান রিটার্ন করতে পারে যা উপস্থিত না-ও থাকতে পারে (এটি NULL বা None হতে পারে)। এর জন্য, রাস্ট Option টাইপ ব্যবহার করে, যা একটি ফাংশন থেকে Some(T) বা None ফেরত দেয়।

fn find_max(a: i32, b: i32) -> Option<i32> {
    if a > b {
        Some(a)
    } else if b > a {
        Some(b)
    } else {
        None
    }
}

fn main() {
    let result = find_max(10, 20);
    match result {
        Some(val) => println!("The maximum value is: {}", val),
        None => println!("The values are equal."),
    }
}

এখানে find_max ফাংশনটি Option<i32> রিটার্ন করে, যেখানে Some(i32) ফেরত আসবে যদি দুটি মান আলাদা থাকে এবং None ফেরত আসবে যদি তারা সমান হয়।

২.৩ Return Without return Keyword

রাস্টে return কিওয়ার্ড ছাড়া একটি মানও রিটার্ন করা যেতে পারে। যদি ফাংশনের শেষে একটি এক্সপ্রেশন থাকে, তবে এটি রিটার্ন করা হবে।

fn add(x: i32, y: i32) -> i32 {
    x + y  // Implicit return, no need for the `return` keyword
}

fn main() {
    let result = add(5, 10);
    println!("The result is: {}", result);
}

এখানে x + y আউটপুটটি সরাসরি রিটার্ন হবে, এবং return কিওয়ার্ড ব্যবহার করার প্রয়োজন নেই।


সারাংশ

রাস্টে প্যারামিটার এবং রিটার্ন ভ্যালুজ ব্যবহারের মাধ্যমে ফাংশনের ইনপুট এবং আউটপুট পরিচালিত হয়। আপনি বিভিন্ন ধরনের প্যারামিটার পাস করতে পারেন যেমন By value, By reference, এবং By mutable reference। এছাড়াও, ফাংশন থেকে একটি মান ফেরত দিতে return কিওয়ার্ড বা সরাসরি এক্সপ্রেশন ব্যবহার করা যায়। রাস্টের শক্তিশালী মালিকানা এবং বোরোউ সিস্টেম এই ফাংশন ব্যবস্থাপনাকে আরও নিরাপদ এবং কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...