null से बचना
Option की मूल बातें
null से बचना, CoddyKit पर बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
null की समस्या
कई भाषाओं में अनुपस्थित मान को null से दर्शाया जाता है। लेकिन जब आप इसकी जाँच करना भूल जाते हैं, तो null कुख्यात NullPointerException उत्पन्न करता है।
Scala इसका अधिक सुरक्षित विकल्प देता है: Option प्रकार।
Option क्या है
Option[A] ऐसे मान को दर्शाता है, जो मौजूद हो भी सकता है और नहीं भी। इसके ठीक दो cases होते हैं:
- मान मौजूद होने पर
Some(value) - मान मौजूद न होने पर
None
प्रकार स्वयं आपको बताता है कि मान अनुपस्थित हो सकता है।
object Main {
def main(args: Array[String]): Unit = {
val present: Option[Int] = Some(42)
val absent: Option[Int] = None
println(present)
println(absent)
}
}Some बनाना
किसी मौजूदा मान को Some में लपेटकर बताएँ कि वह निश्चित रूप से मौजूद है।
object Main {
def main(args: Array[String]): Unit = {
val name: Option[String] = Some("Ada")
println(name)
}
}None से अनुपस्थिति दर्शाना
None वह एकल मान है, जिसका उपयोग तब किया जाता है जब कुछ भी मौजूद न हो। यह किसी भी Option प्रकार के साथ काम करता है।
object Main {
def lookup(found: Boolean): Option[Int] =
if (found) Some(100) else None
def main(args: Array[String]): Unit = {
println(lookup(true))
println(lookup(false))
}
}विफल हो सकने वाले फ़ंक्शन
Option लौटाने से परिणाम न मिलने की संभावना प्रकार हस्ताक्षर में स्पष्ट हो जाती है। कॉल करने वाले इसे अनदेखा नहीं कर सकते।
object Main {
def findUser(id: Int): Option[String] =
if (id == 1) Some("Grace") else None
def main(args: Array[String]): Unit = {
println(findUser(1))
println(findUser(2))
}
}isDefined और isEmpty से जाँच
isDefined बताता है कि कोई Option Some है या नहीं, और isEmpty बताता है कि वह None है या नहीं।
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(5)
val b: Option[Int] = None
println(a.isDefined)
println(b.isEmpty)
}
}Option पर पैटर्न मिलान
क्योंकि Option एक sealed ADT है, इसलिए आप उस पर पैटर्न मिलान कर सकते हैं। इससे मौजूदगी और अनुपस्थिति, दोनों को स्पष्ट रूप से संभाला जाता है।
object Main {
def greet(name: Option[String]): String = name match {
case Some(n) => s"Hello, $n"
case None => "Hello, stranger"
}
def main(args: Array[String]): Unit = {
println(greet(Some("Bo")))
println(greet(None))
}
}Nullable मानों से Option
यदि आपको ऐसा कोड इस्तेमाल करना आवश्यक हो जो null लौटाता है, तो उसे Option(...) में लपेटें। यह null को None और किसी वास्तविक मान को Some में बदल देता है।
object Main {
def main(args: Array[String]): Unit = {
val maybe = Option("data")
val nothing = Option(null)
println(maybe)
println(nothing)
}
}मानक लाइब्रेरी Option लौटाती है
कई अंतर्निहित विधियाँ त्रुटियों का जोखिम लेने के बजाय पहले से ही Option लौटाती हैं। उदाहरण के लिए, List.headOption खाली lists को सुरक्षित रूप से संभालता है।
object Main {
def main(args: Array[String]): Unit = {
val xs = List(1, 2, 3)
val empty = List.empty[Int]
println(xs.headOption)
println(empty.headOption)
}
}null के बजाय Option क्यों
Option, null से बेहतर है क्योंकि यह:
- अनुपस्थित मानों को प्रकार में स्पष्ट करता है
- कॉल करने वालों को अनुपस्थित case संभालने के लिए बाध्य करता है
- NullPointerExceptions को समाप्त करता है
- map, flatMap और for-comprehensions के साथ संयोजित होता है
सब कुछ एक साथ
एक छोटा lookup, जो Option लौटाता है और फिर पैटर्न मिलान से सुरक्षित रूप से संभाला जाता है।
object Main {
val prices = Map("apple" -> 3, "pear" -> 5)
def priceOf(item: String): Option[Int] = prices.get(item)
def main(args: Array[String]): Unit = {
priceOf("apple") match {
case Some(p) => println(s"costs $p")
case None => println("not for sale")
}
println(priceOf("banana"))
}
}त्वरित जाँच
Option की अपनी समझ जाँचें।
पुनरावलोकन
आपने Option से null से बचना सीखा:
Option[A]या तोSome(value)होता है याNone- यह संभावित अनुपस्थिति को प्रकार में स्पष्ट करता है
isDefined/isEmptyया पैटर्न मिलान से जाँच करें- Nullable मानों को लपेटने के लिए
Option(x)का उपयोग करें headOptionऔरMap.getजैसी लाइब्रेरी विधियाँ Option लौटाती हैं
एआई शिक्षक के साथ Scala सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 39
- पाठ
- 143
अक्सर पूछे जाने वाले प्रश्न
क्या “null से बचना” पाठ निःशुल्क है?
हाँ—“null से बचना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“null से बचना” में मैं क्या सीखूँगा?
Option की मूल बातें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“null से बचना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।