Kotlin में टर्नरी ऑपरेटर: शुरुआती लोगों की 5 मुख्य गलतियाँ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में टर्नरी ऑपरेटर: यह क्यों नहीं है और गलतियों से कैसे बचें

\n\n

यदि आप Java, C# या JavaScript से Kotlin में आए हैं, तो आपने निश्चित रूप से कम से कम एक बार सोचा होगा: "मेरा पसंदीदा टर्नरी ऑपरेटर शर्त ? मान1 : मान2 कहाँ है?"। स्पॉयलर: Kotlin में यह नहीं है। और यह कोई बग नहीं, बल्कि एक फीचर है। भाषा के डेवलपर्स ने फैसला किया कि क्लासिकल टर्नरी एक अनावश्यक इकाई है जो कोड पढ़ने को जटिल बनाती है, खासकर जब नेस्टेड शर्तें दो से अधिक हों।

\n\n

लेकिन टर्नरी ऑपरेटर की अनुपस्थिति कोई समस्या नहीं है। Kotlin कहीं अधिक लचीले और सुरक्षित विकल्प प्रदान करता है। हालांकि, शुरुआती (और अनुभवी डेवलपर्स भी) अक्सर एक ही गलतियाँ करते हैं, परिचित संरचना का अनुकरण करने की कोशिश करते हैं। इस लेख में, हम Kotlin में सशर्त अभिव्यक्तियों के साथ काम करते समय शीर्ष 5 गलतियों पर चर्चा करेंगे और दिखाएंगे कि उनसे कैसे बचा जाए। चलिए शुरू करते हैं!

\n\n

गलती #1: सीधे टर्नरी ऑपरेटर डालने का प्रयास

\n\n

सबसे आम गलती Java शैली में कोड लिखना है:

\n\n
// ❌ गलती: Kotlin में ऐसा सिंटैक्स नहीं है\nval max = (a > b) ? a : b\n
\n\n

Kotlin ऐसे कोड को कंपाइल नहीं करेगा। आपको एक त्रुटि मिलेगी: Unresolved reference: ?। कई डेवलपर्स अटक जाते हैं और लाइब्रेरी या प्लगइन खोजने लगते हैं जो टर्नरी ऑपरेटर "जोड़" देते हैं। ऐसा न करें!

\n\n

सही तरीका क्या है?

\n\n

Kotlin में if एक ऑपरेटर नहीं है, बल्कि एक अभिव्यक्ति है। यह एक मान लौटाता है। इसलिए टर्नरी के बजाय सामान्य if-else का उपयोग करें:

\n\n
// ✅ सही तरीका: if एक अभिव्यक्ति के रूप में\nval max = if (a > b) a else b\n
\n\n

कोड क्लासिकल टर्नरी से भी अधिक पढ़ने योग्य है, खासकर यदि शर्त जटिल हो। याद रखें: Kotlin में if हमेशा प्रत्येक शाखा में अंतिम मान लौटाता है।

\n\n

गलती #2: असाइनमेंट करते समय else भूल जाना

\n\n

चूंकि if एक अभिव्यक्ति है, इसे अनिवार्य रूप से एक मान लौटाना होगा। यदि आप लिखते हैं:

\n\n
// ❌ गलती: कोई else नहीं, कंपाइलर नहीं जानता कि क्या लौटाए\nval result = if (condition) "Yes"\n
\n\n

कंपाइलर एक त्रुटि देगा: All branches of 'if' expression are required to return a value। यह तार्किक है: यदि शर्त गलत है तो result में क्या होना चाहिए? null? खाली स्ट्रिंग? कंपाइलर अनुमान नहीं लगाता।

\n\n

सही तरीका क्या है?

\n\n

हमेशा else जोड़ें:

\n\n
// ✅ सही: दोनों शाखाएँ मान लौटाती हैं\nval result = if (condition) "Yes" else "No"\n
\n\n

अपवाद तब है जब आप if को एक ऑपरेटर के रूप में उपयोग करते हैं (बिना असाइनमेंट के)। तब else अनिवार्य नहीं है:

\n\n
// ऑपरेटर if — else की आवश्यकता नहीं\nif (condition) {\n    println("Yes")\n}\n
\n\n

गलती #3: when के बजाय जटिल नेस्टेड if-else

\n\n

जब आपके पास दो से अधिक विकल्प हों, तो if-else if-else की श्रृंखला "स्पेगेटी" में बदल जाती है। इस भयानक कोड को देखें:

\n\n
// ❌ खराब: नेस्टेड if-else पढ़ना मुश्किल है\nval status = if (code == 200) "OK"\n            else if (code == 404) "Not Found"\n            else if (code == 500) "Server Error"\n            else "Unknown"\n
\n\n

पंक्तियाँ उछलती हैं, आँखें भटकती हैं। और यदि कुछ और शर्तें जोड़ दें — तो यह दुःस्वप्न होगा।

\n\n

सही तरीका क्या है?

\n\n

when का उपयोग करें — यह स्टेरॉयड पर switch का एनालॉग है:

\n\n
// ✅ उत्कृष्ट: when एक तालिका की तरह पढ़ा जाता है\nval status = when (code) {\n    200 -> "OK"\n    404 -> "Not Found"\n    500 -> "Server Error"\n    else -> "Unknown"\n}\n
\n\n

Kotlin में when भी एक अभिव्यक्ति है, इसलिए यह मान लौटा सकता है। और यह if-else की श्रृंखला की तुलना में कहीं अधिक स्पष्ट है। इसके अलावा, when जटिल शर्तों का समर्थन करता है: रेंज, प्रकार, मनमानी अभिव्यक्तियाँ।

\n\n
// रेंज के साथ when\nval grade = when (score) {\n    i                

ब्लॉग

पुस्तक अनुशंसाएँ