Kotlin Academy · पाठ

संपूर्ण when

सभी मामलों को शामिल करें

पाठ 4, कुल 4 में से13 चरण

संपूर्ण when, CoddyKit पर Kotlin Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Kotlin Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

सभी स्थितियों को समेटना

एक पूर्ण when हर संभावित मान को सँभालता है। अभिव्यक्ति के रूप में उपयोग किए जाने पर Kotlin इसे आवश्यक बनाता है, ताकि हमेशा कोई परिणाम उत्पन्न हो।

इस पाठ में दिखाया गया है कि when को पूर्ण कैसे बनाया जाए और यह क्यों उपयोगी है।

अन्य शाखा इसे पूर्ण बनाती है

Int जैसे खुले विषयों के लिए, else शाखा उन सभी मानों को संभालती है जिन्हें सूचीबद्ध नहीं किया गया है।

इससे यह सुनिश्चित होता है कि when का हमेशा मिलान हो।

fun label(n: Int): String = when (n) {
    0 -> "zero"
    1 -> "one"
    else -> "many"
}

fun main() {
    println(label(0))
    println(label(5))
}

एनम पूर्णता सक्षम करते हैं

एनम के साथ, कंपाइलर को हर संभावित मान का पता होता है। उन सभी को सूचीबद्ध करने पर आप else हटा सकते हैं।

enum class Direction { NORTH, SOUTH, EAST, WEST }

fun turn(d: Direction): String = when (d) {
    Direction.NORTH -> "up"
    Direction.SOUTH -> "down"
    Direction.EAST -> "right"
    Direction.WEST -> "left"
}

fun main() {
    println(turn(Direction.EAST))
}

एनम का मामला छूट जाना

यदि आप किसी अभिव्यक्ति वाले when में एनम का कोई मान भूल जाते हैं, तो कंपाइलर एक त्रुटि बताता है।

जैसे ही आप कोई नया एनम स्थिरांक जोड़ते हैं, यह बग पकड़ लेता है।

enum class Status { ACTIVE, PAUSED, STOPPED }

fun describe(s: Status): String = when (s) {
    Status.ACTIVE -> "running"
    Status.PAUSED -> "paused"
    Status.STOPPED -> "stopped"
}

fun main() {
    println(describe(Status.PAUSED))
}

सीलबंद क्लास

सीलबंद क्लास में उपक्लास का एक निश्चित समूह होता है, जिसका पता संकलन के समय होता है।

इससे when को else के बिना सभी उपप्रकारों के लिए पूर्ण बनाया जा सकता है।

sealed class Shape
class Circle(val r: Double) : Shape()
class Square(val s: Double) : Shape()

fun area(shape: Shape): Double = when (shape) {
    is Circle -> 3.14159 * shape.r * shape.r
    is Square -> shape.s * shape.s
}

fun main() {
    println(area(Square(4.0)))
}

पूर्णता क्यों उपयोगी है

पूर्ण when में छूटे हुए मामले चुपचाप होने वाले बग के बजाय संकलन त्रुटियाँ बन जाते हैं।

नया उपक्लास या एनम मान जोड़ने पर कंपाइलर हर उस when की ओर संकेत करता है जिसे आपको अपडेट करना है।

कथन अनिवार्य नहीं होते

जब when का उपयोग एक कथन के रूप में किया जाता है, उसे किसी चर में असाइन नहीं किया जाता, तब उसमें पूर्णता आवश्यक नहीं होती।

फिर भी, एनम और सीलबंद प्रकारों के लिए पूर्ण होना अच्छी प्रथा है।

enum class Light { RED, GREEN }

fun main() {
    val light = Light.RED
    when (light) {
        Light.RED -> println("stop")
        Light.GREEN -> println("go")
    }
}

सीलबंद और डेटा को मिलाना

सीलबंद पदानुक्रमों में अक्सर डेटा क्लास के उपक्लास होते हैं। इससे आपको पूर्ण मिलान के साथ गुणों तक पहुँचने के लिए स्मार्ट कास्ट भी मिलते हैं।

sealed class Result
data class Ok(val value: Int) : Result()
data class Err(val message: String) : Result()

fun show(r: Result): String = when (r) {
    is Ok -> "ok: " + r.value
    is Err -> "error: " + r.message
}

fun main() {
    println(show(Ok(42)))
    println(show(Err("boom")))
}

सुरक्षा-जाल के रूप में अन्य शाखा

आप सीलबंद या एनम वाले when में else जोड़ सकते हैं, लेकिन तब कंपाइलर नए मामलों के बारे में चेतावनी देना बंद कर देता है।

else हटाने से संकलन-समय की सुरक्षा बनी रहती है, इसलिए बंद प्रकारों के लिए इसे प्राथमिकता दें।

enum class Coin { HEADS, TAILS }

fun flip(c: Coin): Int = when (c) {
    Coin.HEADS -> 1
    Coin.TAILS -> 0
}

fun main() {
    println(flip(Coin.HEADS))
}

बूलियन और बंद विषय

Boolean के केवल दो मान होते हैं, इसलिए दोनों को सूचीबद्ध करने पर when else के बिना पूर्ण हो जाता है।

fun yesNo(flag: Boolean): String = when (flag) {
    true -> "yes"
    false -> "no"
}

fun main() {
    println(yesNo(true))
    println(yesNo(false))
}

सब कुछ एक साथ

पूर्ण when का अर्थ है कि सभी मामले शामिल हैं:

  • else खुले विषयों, जैसे Int, को संभालता है
  • एनम, सीलबंद क्लास और Boolean else के बिना पूर्ण हो सकते हैं
  • नए मामले जोड़ने पर कंपाइलर छूटे हुए मामलों को चिह्नित करता है
sealed class Event
object Start : Event()
object Stop : Event()

fun handle(e: Event): String = when (e) {
    is Start -> "starting"
    is Stop -> "stopping"
}

fun main() {
    println(handle(Start))
    println(handle(Stop))
}

त्वरित जाँच

पूर्ण when की अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा कि when को पूर्ण कैसे बनाया जाता है:

  • else खुले विषयों को संभालता है
  • एनम, सीलबंद क्लास और Boolean को पूरी तरह शामिल किया जा सकता है
  • संकलन-समय की जाँचें छूटे हुए मामलों को पकड़ती हैं

इससे When Expressions और Smart Casts पाठ्यक्रम पूरा होता है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “संपूर्ण when” पाठ निःशुल्क है?

हाँ — Kotlin Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “संपूर्ण when” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“संपूर्ण when” में मैं क्या सीखूँगा?

सभी मामलों को शामिल करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Kotlin Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Kotlin Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Kotlin Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“संपूर्ण when” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Kotlin Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Kotlin Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. when को अभिव्यक्ति के रूप में
  2. स्मार्ट कास्ट
  3. is और as ऑपरेटर
  4. संपूर्ण when
← Kotlin Academy पर वापस जाएँ