Function Reference Operator (::) - সহজভাবে বোঝানো

 

📌 Function Reference Operator (::) - সহজভাবে বোঝানো

🎯 কল্পনা করুন:

আপনার একজন রোবট সহকারী আছে, যার নাম "KotlinBot" 🤖। আপনি চাইছেন যে, যখন দরকার হবে, তখন KotlinBot আপনার জন্য চা বানিয়ে দেবে।

এখন, আপনি KotlinBot-কে সরাসরি বলতে পারেন:

makeTea()

এতে সে তাৎক্ষণিকভাবে চা বানিয়ে দেবে

কিন্তু, ধরুন আপনি চা বানানোর কাজটি ভবিষ্যতে অন্য কাউকে দিতে চান বা পরে ব্যবহার করতে চান।
এক্ষেত্রে আপনি makeTea() ফাংশনকে সরাসরি কল না করে এর রেফারেন্স সংগ্রহ করতে পারেন!

💡 এটাই হচ্ছে Function Reference Operator (::) 👉 এটি ফাংশনের ঠিকানা বা রেফারেন্স ধরে রাখে!


📌 সাধারণ উদাহরণ:

fun makeTea() {
    println("🍵 Making a cup of tea!")
}

fun main() {
    val teaMaker = ::makeTea  // Function reference
    teaMaker()  // Output: 🍵 Making a cup of tea!
}

🔹 ::makeTea ফাংশনটির রেফারেন্স teaMaker-এ সংরক্ষণ করা হয়েছে।
🔹 যখন teaMaker() কল করা হলো, তখন makeTea() ফাংশনটি এক্সিকিউট হলো


📌 যখন ফাংশনের প্যারামিটার থাকে:

fun greet(name: String) {
    println("Hello, $name! 👋")
}

fun main() {
    val greeter = ::greet
    greeter("Alice")  // Output: Hello, Alice! 👋
}

🔹 ::greet দ্বারা greet() ফাংশনের রেফারেন্স ধরে রাখা হয়েছে
🔹 পরে greeter("Alice") কল করলে greet("Alice") এক্সিকিউট হয়েছে।


📌 Function Reference ল্যাম্বডার বিকল্প হিসেবে:

fun square(x: Int) = x * x

fun main() {
    val numbers = listOf(1, 2, 3, 4)
    
    // Function reference দিয়ে map() ব্যবহার করা হলো
    val squaredNumbers = numbers.map(::square)  
    println(squaredNumbers)  // Output: [1, 4, 9, 16]
}

🔹 এখানে ::square ব্যবহার করে square() ফাংশনের রেফারেন্স পাঠানো হয়েছে।


📌 যখন ক্লাসের মেথড ব্যবহার করতে হয়:

class MathOperations {
    fun double(x: Int) = x * 2
}

fun main() {
    val mathOps = MathOperations()
    
    val doubler = mathOps::double  // Instance method reference
    println(doubler(5))  // Output: 10
}

🔹 mathOps::double দ্বারা double() মেথডের রেফারেন্স ধরে রাখা হয়েছে।


📌 উপসংহার:

:: ফাংশনের রেফারেন্স ধরে রাখতে ব্যবহৃত হয়।
পরে এক্সিকিউট করার জন্য ফাংশনকে ভেরিয়েবলে সংরক্ষণ করা যায়।
লিস্ট প্রসেসিং (যেমন: map(::functionName)) কাজে লাগে।
অবজেক্টের মেথডও একইভাবে রেফার করা যায় (instance::methodName)।


🤖 সংক্ষেপে সহজ কথা:

💡 Function Reference Operator (::) হলো ফাংশনের "ঠিকানা", যা আপনি সংরক্ষণ করে পরে ব্যবহার করতে পারেন! 🚀

Comments

Popular posts from this blog

AI (Artificial Intelligence) সহজভাবে বোঝার জন্য একদম মস্তিষ্ক-বান্ধব ব্যাখ্যা 🧠🤖

🧠 Regex কী?

Kotlin-এ ভেরিয়েবল ঘোষণা করার দুই উপায়