đ Lambda with Receiver – Brain-Friendly Explanation!
đ Lambda with Receiver – Brain-Friendly Explanation!
Lambda with Receiver āĻšāϞো Kotlin-āĻ āĻāĻāĻি āĻŦিāĻļেāώ āϧāϰāύেāϰ Lambda āĻĢাংāĻļāύ, āϝেāĻাāύে āĻāĻĒāύি this āĻāϰ āĻŽাāϧ্āϝāĻŽে āϏāϰাāϏāϰি āĻোāύāĻ āĻ
āĻŦāĻেāĻ্āĻ (Receiver) āĻ
্āϝাāĻ্āϏেāϏ āĻāϰāϤে āĻĒাāϰেāύ। āĻāĻি āĻŽূāϞāϤ extension functions āĻāϰ āĻŽāϤো āĻাāĻ āĻāϰে, āϤāĻŦে Lambda āĻĢাংāĻļāύেāϰ āĻŽāϧ্āϝে āĻāĻি āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা āĻšā§।
đš āϏাāϧাāϰāύ Lambda āĻāĻŦং Lambda with Receiver āĻŽāϧ্āϝে āĻĒাāϰ্āĻĨāĻ্āϝ:
-
āϏাāϧাāϰāĻŖ Lambda:
- Syntax:
{ parameter -> expression } - āĻāϤে āĻোāύো Receiver (āĻ āĻŦāĻেāĻ্āĻ) āĻĨাāĻে āύা, āĻāĻĒāύি parameter āĻĻিā§ে āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰেāύ।
- āĻāĻĻাāĻšāϰāĻŖ:
val double: (Int) -> Int = { x -> x * 2 } println(double(5)) // Output: 10
- Syntax:
-
Lambda with Receiver:
- āĻāĻি Receiver āĻ
āĻŦāĻেāĻ্āĻāĻে
thisāĻĻিā§ে āĻ ্āϝাāĻ্āϏেāϏ āĻāϰāϤে āĻĻেā§। - āĻ āϧāϰāύেāϰ Lambda-āϤে Receiver āĻāĻ্āϏāĻĒ্āϰেāϏ āĻāϰা āĻšā§
{ receiver -> ... }āĻāϰ āĻŽাāϧ্āϝāĻŽে, āϤāĻŦে āĻāĻিthisāĻļāĻŦ্āĻĻেāϰ āĻŽাāϧ্āϝāĻŽে āϏāϰাāϏāϰি āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা āϝাā§। - āĻāĻĻাāĻšāϰāĻŖ:
fun String.printFancyMessage() { println("đĨ $this đĨ") } "Hello Kotlin".printFancyMessage() // Output: đĨ Hello Kotlin đĨ
- āĻāĻি Receiver āĻ
āĻŦāĻেāĻ্āĻāĻে
đš Lambda with Receiver āĻি āĻাāĻŦে āĻাāĻ āĻāϰে?
Lambda with Receiver-āĻ this āĻŦ্āϝāĻŦāĻšাāϰেāϰ āĻŽাāϧ্āϝāĻŽে āĻāĻĒāύি āϏāĻšāĻেāĻ āĻ
āĻŦāĻেāĻ্āĻেāϰ āĻĒ্āϰāĻĒাāϰ্āĻি āĻŦা āĻĢাংāĻļāύ āĻ
্āϝাāĻ্āϏেāϏ āĻāϰāϤে āĻĒাāϰেāύ। āĻāĻাāύে this āĻŽাāύে āĻšāĻ্āĻে Lambda āĻāϰ Receiver Object।
āĻāĻি āĻŦিāĻļেāώāϤ DSL (Domain Specific Language) āϤৈāϰি āĻāϰাāϰ āĻ্āώেāϤ্āϰে āĻŦ্āϝāĻŦāĻšৃāϤ āĻšā§, āϝেāĻŽāύঃ Jetpack Compose, Gradle, āĻŦা HTML Builders।
āĻāĻĻাāĻšāϰāĻŖ:
class Box(val width: Int, val height: Int)
fun createBox(init: Box.() -> Unit): Box {
val box = Box(0, 0) // Initial box with 0x0 size
box.init() // Call lambda with receiver here
return box
}
val box = createBox {
println("Box width: $width, height: $height")
// 'this' refers to the Box object
}
- āĻāĻাāύে
Box.()Lambda with Receiver, āϝেāĻাāύেthisāĻĻ্āĻŦাāϰা āĻāĻĒāύিBoxāĻ āĻŦāĻেāĻ্āĻেāϰ āĻĒ্āϰāĻĒাāϰ্āĻি (āϝেāĻŽāύwidth,height) āĻ ্āϝাāĻ্āϏেāϏ āĻāϰāĻেāύ।
đš Lambda with Receiver āĻোāĻĨাā§ āĻŦ্āϝāĻŦāĻšৃāϤ āĻšā§?
-
DSL āϤৈāϰি āĻāϰāϤে:
Lambda with Receiver āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা āĻšā§ āĻĒ্āϰোāĻ্āϰাāĻŽিং āĻাāώাāϰ āĻŽāϧ্āϝে āĻŦিāĻļেāώ āĻāĻĻ্āĻĻেāĻļ্āϝে āĻোāĻĄ āϞেāĻাāϰ āĻāύ্āϝ (āϝেāĻŽāύ Jetpack Compose āĻāϰ UI āϤৈāϰি, āĻŦা Gradle āϏ্āĻ্āϰিāĻĒ্āĻে āύিāϰ্āĻĻিāώ্āĻ āĻাāĻেāϰ āĻāύ্āϝ)।- āĻāĻĻাāĻšāϰāĻŖ:
fun html(init: HTML.() -> Unit) { val html = HTML() html.init() println(html) } class HTML { fun head(init: Head.() -> Unit) { val head = Head() head.init() println("Head: $head") } } class Head
- āĻāĻĻাāĻšāϰāĻŖ:
-
Jetpack Compose:
- Jetpack Compose-āĻ UI āĻāĻŽ্āĻĒোāύেāύ্āĻ āϤৈāϰি āĻāϰāϤে Lambda with Receiver āĻŦ্āϝāĻŦāĻšাāϰ āĻšā§। āϝেāĻŽāύ:
LazyColumn { item { Text("Hello World!") } } - āĻāĻাāύে
LazyColumnāĻŦাitemāĻĢাংāĻļāύāĻুāϞোāϰ āĻিāϤāϰ āĻāĻĒāύিthisāĻāϰ āĻŽাāϧ্āϝāĻŽে āϞেāĻāĻāĻāĻ āĻāĻŽ্āĻĒোāύেāύ্āĻ āĻ ্āϝাāĻ্āϏেāϏ āĻāϰāĻেāύ।
- Jetpack Compose-āĻ UI āĻāĻŽ্āĻĒোāύেāύ্āĻ āϤৈāϰি āĻāϰāϤে Lambda with Receiver āĻŦ্āϝāĻŦāĻšাāϰ āĻšā§। āϝেāĻŽāύ:
đš Lambda with Receiver āĻāϰ āϏুāĻŦিāϧা
-
āϏুāύ্āĻĻāϰ āĻāĻŦং āĻĒāϰিāώ্āĻাāϰ āĻোāĻĄ:
- āĻāĻĒāύি
thisāĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে object āĻāϰ āĻĒ্āϰāĻĒাāϰ্āĻি āĻŦা āĻĢাংāĻļāύ āĻĄিāϰেāĻ্āĻāϞি āĻ ্āϝাāĻ্āϏেāϏ āĻāϰāϤে āĻĒাāϰেāύ, āϝাāϰ āĻĢāϞে āĻোāĻĄ āĻšā§ে āĻāĻ ে āĻĒā§āϤে āϏāĻšāĻ āĻāĻŦং āϏুāύ্āĻĻāϰ।
- āĻāĻĒāύি
-
Domain Specific Language (DSL) āϤৈāϰি āĻāϰা āϝাā§:
- Lambda with Receiver āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āĻāĻĒāύি āύāϤুāύ āĻাāώা āĻŦা API āϤৈāϰি āĻāϰāϤে āĻĒাāϰেāύ āϝা āĻিāĻু āύিāϰ্āĻĻিāώ্āĻ āĻাāĻ āĻŦা āĻĢিāĻাāϰāĻে āϏāĻšāĻāĻাāĻŦে āϰিāĻĒ্āϰেāĻেāύ্āĻ āĻāϰে। āϝেāĻŽāύ HTML Builder āĻŦা UI Builders।
-
Readable Syntax:
- āĻোāĻĄ āĻšā§ āĻ āύেāĻ āĻŦেāĻļি āĻ ্āϝাāĻ্āϰিāĻেāĻেāĻĄ āĻāĻŦং āĻĒাāĻ āϝোāĻ্āϝ, āϝেāĻšেāϤু āĻāĻĒāύি āĻāĻŽāĻĒ্āϞেāĻ্āϏ āĻāύāĻĢিāĻাāϰেāĻļāύāĻুāϞিāĻে āϏāĻšāĻ āĻাāώাā§ āĻিāϤ্āϰিāϤ āĻāϰāϤে āĻĒাāϰেāύ।
đš āϰিāĻ্āϝাāĻĒ:
- Lambda with Receiver āĻāĻĒāύাāĻে object-oriented programming-āĻ āĻāϰāĻ āϏāĻšāĻ āĻāĻŦং āĻĒāϰিāώ্āĻাāϰāĻাāĻŦে āĻাāĻ āĻāϰাāϰ āϏুāϝোāĻ āĻĻেā§, āϝেāĻাāύে āĻāĻĒāύি
thisāĻĻিā§ে āĻ āĻŦāĻেāĻ্āĻেāϰ āĻĢাংāĻļāύ āĻŦা āĻĒ্āϰāĻĒাāϰ্āĻি āϏāϰাāϏāϰি āĻ ্āϝাāĻ্āϏেāϏ āĻāϰāϤে āĻĒাāϰেāύ। - āĻāĻি āĻŽূāϞāϤ DSL āϤৈāϰি āĻāϰাāϰ āĻ্āώেāϤ্āϰে āĻ āϤ্āϝāύ্āϤ āĻাāϰ্āϝāĻāϰী।
āĻāĻāύ āĻĨেāĻে Lambda with Receiver āĻāϰ āϧাāϰāĻŖা āϏ্āĻĒāώ্āĻ āĻāĻŦং āϏāĻšāĻে āĻŦুāĻāϤে āĻĒাāϰāĻŦেāύ! đđ
Comments
Post a Comment