Kotlin এ Lambda with Receiver 🧠💡 (ব্রেন-ফ্রেন্ডলি ব্যাখ্যা)
💭 প্রথমে, Lambda কী?
Lambda মানে হলো একটা ছোট্ট ফাংশন, যেটা কোনো নাম ছাড়া ব্যবহার করা যায়! সহজ কথায়, এটা এমন এক টুকরো কোড, যেটাকে আমরা ভেরিয়েবলের মতো পাস করতে পারি।
উদাহরণ:
val greet = { name: String -> "Hello, $name!" }
println(greet("Alice")) // Output: Hello, Alice!
এখন Lambda with Receiver কীভাবে কাজ করে? চলুন সহজ ভাষায় দেখি!
Lambda with Receiver মানে কী? 🤔
ভাবুন, আপনার কাছে একটা হোয়াইটবোর্ড আছে। সাধারণত, আপনি বলবেন:
"হোয়াইটবোর্ড, নিজের উপর 'Hello' লিখো!"
কিন্তু Lambda with Receiver-এ আপনি হোয়াইটবোর্ডের ভূমিকায় চলে যান! 🪄
এখন আপনাকে আর "হোয়াইটবোর্ড" বলতে হবে না, সরাসরি লিখতে পারবেন!
কোড দেখে সহজে বুঝি! 👇
val whiteboard: StringBuilder.() -> Unit = {
this.append("Hello, Kotlin!")
}
এখানে কী হচ্ছে? 🧐
-
StringBuilder.() -> Unitমানে হলো এই ল্যাম্বডাটি শুধুমাত্র StringBuilder-এর সাথে কাজ করবে। -
{ }এর ভেতরে আমরা সরাসরিthisদিয়ে StringBuilder-এর মেথড ব্যবহার করতে পারছি!
Lambda with Receiver কিভাবে ইউজ করবো?
val sb = StringBuilder()
sb.whiteboard() // Calls the lambda on sb
println(sb) // Output: Hello, Kotlin!
✅ আমরা sb পাস না করেও সরাসরি এর উপর কাজ করতে পারছি! 🎉
কোথায় কাজে লাগে? 🛠️
1️⃣ Custom DSL (Domain Specific Language)
-
apply,run,let,alsoইত্যাদি এর ওপর ভিত্তি করে তৈরি!
2️⃣ Android UI Components (Jetpack Compose)
fun TextView.style() {
textSize = 20f
setTextColor(Color.RED)
}
val tv = TextView(context).apply { style() }
3️⃣ Higher-Order Functions
val person = Person().apply {
name = "Alice"
age = 25
}
সংক্ষেপে 📝
✅ Lambda with Receiver আমাদের কোড সিম্পল ও ক্লিন করে!
✅ এটা this কে অটোম্যাটিকলি ধরে ফেলে, আলাদা করে অবজেক্ট পাঠাতে হয় না!
✅ DSL, UI, ও Kotlin Standard ফাংশন-এ অনেক কাজে লাগে!
এটাকে এমনভাবে ভাবুন যেন আপনি নিজেই অবজেক্টের ভূমিকায় চলে গেছেন! 🧙♂️✨
👉 বুঝতে সমস্যা হলে বলেন! 😊 🚀
Comments
Post a Comment