đ Kotlin DSL (Domain-Specific Language) – Brain-Friendly Guide!
đ Kotlin DSL (Domain-Specific Language) – Brain-Friendly Guide!
đš Kotlin DSL āĻি?
Kotlin DSL (Domain-Specific Language) āĻšāϞ Kotlin-āĻāϰ āĻিāϤāϰে āϤৈāϰি āĻāĻāϧāϰāύেāϰ āĻŦিāĻļেāώ āϏিāύāĻ্āϝাāĻ্āϏ, āϝা āĻোāĻĄāĻে āϏāĻšāĻ, āĻ্āϞিāύ āĻ āϰিāĻĄেāĻŦāϞ āĻāϰে।
đ āϏāĻšāĻ āĻাāώাā§ āĻŦāϞāϤে āĻেāϞে:
✅ Kotlin DSL = Kotlin āĻাāώাāϰ "āύিāĻāϏ্āĻŦ āϏ্āĻাāĻāϞ", āϝা āύিāϰ্āĻĻিāώ্āĻ āĻাāĻ āϏāĻšāĻে āĻāϰāϤে āϏাāĻšাāϝ্āϝ āĻāϰে।
đĄ āĻŽāύে āϰাāĻাāϰ āĻ্āϰিāĻ:
- DSL = āĻোāĻ, āύিāϰ্āĻĻিāώ্āĻ āĻাāĻেāϰ āĻāύ্āϝ āĻŦিāĻļেāώ āĻোāĻĄ āϏিāύāĻ্āϝাāĻ্āϏ
- Kotlin DSL = Kotlin-āĻ āϞেāĻা DSL, āϝা āĻŦিāĻĻ্āϝāĻŽাāύ Kotlin āĻাāώাāϰ āĻিāϤāϰেāĻ āϤৈāϰি āĻāϰা āĻšā§
đš Kotlin DSL āĻিāĻাāĻŦে āĻাāĻ āĻāϰে?
Kotlin DSL āĻāϏāϞে Higher-Order Functions, Lambda with Receiver, āĻāĻŦং Extension Functions āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে।
đ ️ ā§§. Lambda with Receiver (DSL-āĻāϰ āĻŽূāϞ āĻļāĻ্āϤি!)
đ āĻāĻা Kotlin DSL-āĻāϰ āĻŽূāϞ āĻĢিāĻাāϰ, āϝা āĻāĻāĻা āĻ্āϞাāϏেāϰ āĻিāϤāϰে āĻāĻ āĻ্āϞাāϏেāϰ āĻĒ্āϰāĻĒাāϰ্āĻি āĻ āĻĢাংāĻļāύ āĻĄিāϰেāĻ্āĻāϞি āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻĻেā§।
đ āϏাāϧাāϰāĻŖ Lambda vs Lambda with Receiver
❌ āϏাāϧাāϰāĻŖ Lambda (āĻĒ্āϝাāϰাāĻŽিāĻাāϰ āύিāϤে āĻšā§)
fun printMessage(action: (String) -> Unit) {
action("Hello Kotlin!")
}
printMessage { msg ->
println(msg)
}
// Output: Hello Kotlin!
✅ āĻāĻাāύে msg āĻĒ্āϝাāϰাāĻŽিāĻাāϰ āĻĻিā§ে āĻŽেāϏেāĻ āĻĒাāĻ াāϤে āĻšāĻ্āĻে।
✅ Lambda with Receiver (āĻĄিāϰেāĻ্āĻ āĻ ্āϝাāĻ্āϏেāϏ āĻāϰা āϝাā§)
fun String.printFancyMessage() {
println("đĨ $this đĨ")
}
"Hello DSL".printFancyMessage()
// Output: đĨ Hello DSL đĨ
✅ āĻāĻাāύে this āĻĻিā§ে String āĻে āĻĄিāϰেāĻ্āĻāϞি āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা āϝাāĻ্āĻে।
đš Kotlin DSL āĻāĻĻাāĻšāϰāĻŖ (Jetpack Compose & Gradle DSL)
đ ā§§. Jetpack Compose DSL
LazyColumn {
item {
Text("This is a Kotlin DSL Example!")
}
items(listOf("Apple", "Banana", "Mango")) { fruit ->
Text(fruit)
}
}
✅ āĻāĻাāύে LazyColumn {} āĻāĻŦং item {} āĻĻেāĻে āĻŽāύে āĻšā§ āϝেāύ āĻāĻāĻা āύāϤুāύ āĻĒ্āϰোāĻ্āϰাāĻŽিং āĻাāώা!
✅ āĻিāύ্āϤু āĻāϏāϞে āĻāĻি Kotlin DSL!
đ ⧍. Gradle DSL (āĻোāύো XML āϞাāĻāĻŦে āύা!)
dependencies {
implementation("androidx.compose.ui:ui:1.0.0")
}
✅ dependencies {} āĻāϏāϞে Kotlin DSL, āϝা build.gradle.kts āĻĢাāĻāϞে āĻŦ্āϝāĻŦāĻšাāϰ āĻšā§।
đš āύিāĻেāϰ Kotlin DSL āϤৈāϰি āĻāϰা (Custom DSL)
āĻāĻŽāϰা āύিāĻেāϰাāĻ DSL āĻŦাāύাāϤে āĻĒাāϰি! đ
đ āĻāĻĻাāĻšāϰāĻŖ – Greeting DSL
class Greeting {
fun hello(name: String) {
println("Hello, $name! đ")
}
}
fun greet(block: Greeting.() -> Unit) {
val greeting = Greeting()
greeting.block()
}
greet {
hello("Kotlin DSL")
}
// Output: Hello, Kotlin DSL! đ
✅ āĻāĻাāύে greet { hello("Kotlin DSL") } āĻāĻāĻĻāĻŽ DSL-āĻāϰ āĻŽāϤো āϞাāĻāĻে!
đš Kotlin DSL āĻেāύ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻŦো?
| ✅ āϏুāĻŦিāϧা | đ āĻŦ্āϝাāĻ্āϝা |
|---|---|
| āϏāĻšāĻ āĻ āĻāĻŽāĻĒ্āϝাāĻ্āĻ | āĻোāĻĄ āĻোāĻ āĻšā§, āϰিāĻĄেāĻŦāϞ āĻšā§ |
| Readable (āĻĒā§āϤে āϏāĻšāĻ) | XML āĻŦা āĻāĻিāϞ āϏিāύāĻ্āϝাāĻ্āϏেāϰ āĻĻāϰāĻাāϰ āύেāĻ |
| Type-Safe (āĻāĻŽ āĻুāϞ āĻšā§) | Runtime error āĻāĻŽ āĻšā§, āĻাāϰāĻŖ Kotlin āĻাāĻāĻĒ-āϏেāĻĢ |
| āĻাāϏ্āĻāĻŽ DSL āĻŦাāύাāύো āϏāĻŽ্āĻāĻŦ | āύিāĻāϏ্āĻŦ DSL āϤৈāϰি āĻāϰা āϝাā§ |
đš Kotlin DSL āϏংāĻ্āώেāĻĒে āĻŽāύে āϰাāĻুāύ!
1️⃣ DSL āĻšāϞ āύিāϰ্āĻĻিāώ্āĻ āĻাāĻ āϏāĻšāĻে āĻāϰāϤে āϤৈāϰি āĻোāĻĄ āϏ্āĻাāĻāϞ
2️⃣ Kotlin DSL āĻšāϞ Kotlin-āĻāϰ āĻিāϤāϰেāĻ āϤৈāϰি āĻāϰা DSL
3️⃣ Lambda with Receiver āĻāϰ āϏাāĻšাāϝ্āϝে DSL āϤৈāϰি āĻšā§
4️⃣ Jetpack Compose, Gradle, HTML Builder āϏāĻŦāĻ Kotlin DSL-āĻāϰ āĻāĻĻাāĻšāϰāĻŖ
5️⃣ āύিāĻেāϰ Kotlin DSL āĻŦাāύাāύো āϏāĻŽ্āĻāĻŦ!
āĻāĻāύ āĻĨেāĻে Kotlin DSL āĻāĻĒāύাāĻে āĻāϰ āĻŦিāĻ্āϰাāύ্āϤ āĻāϰāĻŦে āύা! đđ
Comments
Post a Comment