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

Popular posts from this blog

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

🧠 Regex কী?

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