apply और with: कॉन्फ़िगर करें और लौटाएँ
Objects को configure करने के लिए apply और with का उपयोग करें और उनके return values समझें।
apply और with: कॉन्फ़िगर करें और लौटाएँ, CoddyKit पर Kotlin Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Kotlin Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
स्कोप फ़ंक्शन का पुनरावलोकन
कोटलिन के स्कोप फ़ंक्शन (apply, also, let, run, with) आपको किसी ऑब्जेक्ट के संदर्भ में एक ब्लॉक चलाने देते हैं। हर फ़ंक्शन रिसीवर (this बनाम it) और लौटाए गए मान के आधार पर अलग होता है।
लागू फ़ंक्शन की मूल बातें
apply { ... } ब्लॉक को रिसीवर से जुड़े this के साथ चलाता है और स्वयं रिसीवर लौटाता है। ऑब्जेक्ट कॉन्फ़िगर करने के लिए यह बिल्कुल उपयुक्त है।
class Person {
var name: String = ""
var age: Int = 0
}
fun main() {
val p = Person().apply {
name = "Ada"
age = 35
}
println("${p.name}, ${p.age}")
}लागू फ़ंक्शन उपयोगी क्यों है
apply के बिना, कॉन्फ़िगर करने और फिर ऑब्जेक्ट लौटाने के लिए आपको एक अस्थायी चर की आवश्यकता होती। apply इसे एक ही एक्सप्रेशन में संक्षिप्त कर देता है।
class Config {
var host: String = ""
var port: Int = 0
}
fun makeConfig(): Config {
// Without apply:
// val c = Config(); c.host = "x"; c.port = 8080; return c
return Config().apply {
host = "localhost"
port = 8080
}
}
fun main() {
val c = makeConfig()
println("${c.host}:${c.port}")
}श्रृंखला में लागू फ़ंक्शन
apply रिसीवर लौटाता है, इसलिए इसके बाद अन्य मेथड कॉल आसानी से जोड़ी जा सकती हैं।
class Builder {
val parts = mutableListOf<String>()
}
fun main() {
val result = Builder().apply {
parts.add("hello")
parts.add("world")
}.parts.joinToString(" ")
println(result) // hello world
}साथ फ़ंक्शन की मूल बातें
with(receiver) { ... } ब्लॉक को this = रिसीवर के साथ चलाता है और लैम्ब्डा का परिणाम लौटाता है (रिसीवर नहीं)। जब आपको रिसीवर से कोई व्युत्पन्न मान निकालना हो, तब यह उपयोगी है।
class Rect(val w: Int, val h: Int)
fun main() {
val area = with(Rect(3, 4)) {
w * h
}
println(area) // 12
}लागू फ़ंक्शन बनाम साथ फ़ंक्शन
लागू फ़ंक्शन रिसीवर लौटाता है, इसलिए बिल्डर के लिए बिल्कुल उपयुक्त है। साथ फ़ंक्शन लैम्ब्डा का परिणाम लौटाता है, इसलिए रिसीवर से गणना करने के लिए उपयुक्त है।
class Box(var width: Int = 0, var height: Int = 0)
fun main() {
val box = Box().apply { width = 10; height = 20 } // returns Box
val area = with(box) { width * height } // returns Int
println("$box area=$area")
}सूचियों के साथ लागू फ़ंक्शन
परिवर्तनशील संग्रह को उसी स्थान पर कॉन्फ़िगर कीजिए।
fun main() {
val list = mutableListOf<String>().apply {
add("a")
add("b")
add("c")
}
println(list)
}लागू फ़ंक्शन वही प्रकार लौटाता है
apply का परिणाम प्रकार हमेशा रिसीवर का प्रकार होता है। स्पष्ट रूप से परिणाम लौटाने की आवश्यकता नहीं होती।
class Sb {
private val buf = StringBuilder()
fun append(s: String): Sb { buf.append(s); return this }
fun build(): String = buf.toString()
}
fun main() {
val s = Sb().apply {
append("Hello, ")
append("Kotlin!")
}.build()
println(s)
}साथ फ़ंक्शन में कई सदस्यों का पुनः उपयोग
with के अंदर रिसीवर के सभी सदस्य स्कोप में होते हैं — obj. प्रीफ़िक्स की आवश्यकता नहीं होती।
class Person(val name: String, val age: Int)
fun main() {
val description = with(Person("Ada", 35)) {
"Name: $name, Age: $age, AgeNext: ${age + 1}"
}
println(description)
}नेस्टेड लागू फ़ंक्शन
पदानुक्रमित कॉन्फ़िगरेशन के लिए आप एक apply के अंदर दूसरा apply रख सकते हैं। इसका उपयोग सीमित रूप से कीजिए।
class Address {
var city: String = ""
var zip: String = ""
}
class User {
var name: String = ""
var address: Address = Address()
}
fun main() {
val u = User().apply {
name = "Ada"
address.apply {
city = "Istanbul"
zip = "34000"
}
}
println("${u.name} in ${u.address.city}")
}लागू फ़ंक्शन का उपयोग कब न करें
यदि आपको रिसीवर लौटाने की आवश्यकता नहीं है, तो नामित आर्ग्युमेंट के साथ सामान्य निर्माण या let/run को प्राथमिकता दीजिए। केवल विविधता के लिए apply का उपयोग मत कीजिए।
class Config(val host: String, val port: Int)
fun main() {
// Named arguments often beat builder + apply:
val cfg = Config(host = "localhost", port = 8080)
println("${cfg.host}:${cfg.port}")
}त्वरित जाँच
अपने ब्लॉक को चलाने के बाद apply क्या लौटाता है?
पुनरावलोकन
लागू करें रिसीवर के रूप में this के साथ एक खंड चलाता है और रिसीवर लौटाता है — वस्तु के विन्यास के लिए बिल्कुल उपयुक्त। विथ रिसीवर के रूप में this के साथ एक खंड चलाता है और लैम्ब्डा का परिणाम लौटाता है — व्युत्पन्न मानों के लिए बिल्कुल उपयुक्त। विन्यास सरल हो तो नामित तर्कों का उपयोग करें।
एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “apply और with: कॉन्फ़िगर करें और लौटाएँ” पाठ निःशुल्क है?
हाँ — Kotlin Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “apply और with: कॉन्फ़िगर करें और लौटाएँ” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“apply और with: कॉन्फ़िगर करें और लौटाएँ” में मैं क्या सीखूँगा?
Objects को configure करने के लिए apply और with का उपयोग करें और उनके return values समझें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Kotlin Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Kotlin Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Kotlin Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“apply और with: कॉन्फ़िगर करें और लौटाएँ” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Kotlin Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Kotlin Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- apply और with: कॉन्फ़िगर करें और लौटाएँ
- let और run: रूपांतरण और Scope
- also: Receiver बदले बिना Side Effects
- सही Scope Function चुनना: निर्णय मार्गदर्शिका