What is a Lambda Function?
🧠 Brain-Friendly Guide to Lambda Functions in Kotlin
🚀 What is a Lambda Function?
একটি Lambda function হল নামহীন (Anonymous) ফাংশন, যা short & concise উপায়ে লেখা হয়।
Lambda ফাংশন ব্যবহার করলে boilerplate কোড কমে, এবং কোড সহজ ও রিডেবল হয়।
👉 সাধারণ ফাংশন VS ল্যাম্বডা ফাংশন
// সাধারণ ফাংশন (Normal Function)
fun square(x: Int): Int {
return x * x
}
// একই কাজ ল্যাম্বডা ফাংশন দিয়ে
val squareLambda: (Int) -> Int = { x -> x * x }
🔹 squareLambda নামের ভেরিয়েবলটিই একটি ফাংশন হয়ে গেছে!
🔹 { x -> x * x } → এখানে x ইনপুট, এবং x * x আউটপুট রিটার্ন করছে।
🎯 Lambda Function-এর Structure
val lambdaName: (InputType) -> ReturnType = { parameter -> functionBody }
📌 Example:
val greet: (String) -> String = { name -> "Hello, $name!" }
println(greet("Kotlin")) // Output: Hello, Kotlin!
🛠️ Lambda Function কিভাবে ব্যবহার করা হয়?
✅ 1️⃣ Single Parameter ল্যাম্বডা
val double: (Int) -> Int = { it * 2 }
println(double(5)) // Output: 10
🔹 it হলো default parameter, যা একটি মাত্র ইনপুট থাকলে ব্যবহার করা যায়।
✅ 2️⃣ Multiple Parameters ল্যাম্বডা
val add: (Int, Int) -> Int = { a, b -> a + b }
println(add(10, 20)) // Output: 30
🔹 এখানে a, b দুইটি ইনপুট এবং a + b আউটপুট।
✅ 3️⃣ No Parameter ল্যাম্বডা
val sayHello: () -> String = { "Hello, Kotlin!" }
println(sayHello()) // Output: Hello, Kotlin!
🔹 এখানে কোনো ইনপুট নেই, শুধু একটি String রিটার্ন করছে।
✅ 4️⃣ Lambda Function Inside Higher-Order Function
fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operateOnNumbers(10, 5) { x, y -> x * y }
println(result) // Output: 50
🔹 operateOnNumbers ফাংশন একটি ল্যাম্বডা ফাংশন ইনপুট হিসেবে নেয়।
🔹 আমরা x, y -> x * y দিয়ে এটিকে ডায়নামিক্যালি পরিবর্তন করতে পারি।
✅ 5️⃣ Trailing Lambda (শেষে ল্যাম্বডা দিলে {} ব্যবহার করা যায়)
fun doSomething(action: () -> Unit) {
action()
}
// Trailing Lambda
doSomething {
println("This is a trailing lambda!")
}
🔹 doSomething() ফাংশনের শেষ আর্গুমেন্ট ল্যাম্বডা হলে () এর বাইরে {} লেখা যায়।
🚀 Lambda ব্যবহার করার সুবিধা
✅ Less Code → কম কোডে বেশি কাজ করা যায়।
✅ More Readable → ফাংশন শর্ট হলে পড়তে সুবিধা হয়।
✅ Higher-Order Functions-এ সহজে ব্যবহার করা যায়।
🎯 Lambda এবং map, filter, forEach (Collections-এ ব্যবহার)
val numbers = listOf(1, 2, 3, 4, 5)
// ✅ Map (প্রত্যেক সংখ্যা দ্বিগুণ করবে)
val doubled = numbers.map { it * 2 }
println(doubled) // Output: [2, 4, 6, 8, 10]
// ✅ Filter (শুধুমাত্র জোড় সংখ্যা নেবে)
val evens = numbers.filter { it % 2 == 0 }
println(evens) // Output: [2, 4]
// ✅ forEach (প্রত্যেকটি সংখ্যা প্রিন্ট করবে)
numbers.forEach { println(it) }
🎯 Lambda এবং run, apply, let, with (Scope Functions-এ ব্যবহার)
data class Person(var name: String, var age: Int)
val person = Person("Alice", 25)
// ✅ apply (object initialization)
person.apply {
name = "Bob"
age = 30
}.also {
println(it)
}
// ✅ let (non-null check)
person.let {
println("Name: ${it.name}, Age: ${it.age}")
}
🎯 Lambda Expression VS Anonymous Function
🔹 Lambda Expression (Shortcut)
val sum = { a: Int, b: Int -> a + b }
println(sum(3, 5)) // Output: 8
🔹 Anonymous Function (Function Inside Variable)
val sumFun = fun(a: Int, b: Int): Int {
return a + b
}
println(sumFun(3, 5)) // Output: 8
📌 Lambda ছোট এবং সহজ, কিন্তু Anonymous Function বেশি কাস্টমাইজেবল।
🎯 Final Summary
| Feature | Lambda Function 🚀 | Normal Function 📜 |
|---|---|---|
| Name | নামহীন (Anonymous) | নামসহ (Named) |
| Syntax | { parameter -> functionBody } |
fun name(parameters): ReturnType {} |
| Boilerplate | ✅ কম কোড | ❌ বেশি কোড |
| Usage | map, filter, forEach, apply, etc. |
সাধারণ ফাংশন বা ক্লাসে |
🏆 Lambda Function মনে রাখার সহজ সূত্র
✔ Lambda = ছোট ফাংশন + নামহীন (Anonymous) + সহজ সিনট্যাক্স।
✔ এক লাইনের ফাংশনের জন্য Lambda পারফেক্ট!
✔ Higher-Order Function & Scope Function-এ ল্যাম্বডা মাস্টার হয়ে উঠুন! 🚀
✅ Practice Challenge for You!
আপনি কি বুঝেছেন? নিচের কোডের আউটপুট কী হবে?
val numbers = listOf(1, 2, 3, 4, 5)
val squared = numbers.map { it * it }
println(squared.filter { it > 10 })
💡 আপনার উত্তর দিন! 😃
Comments
Post a Comment