बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala · पाठ

Scala 3 में Enums

नई enum वाक्यविन्यास

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

Scala 3 में Enums, CoddyKit पर बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

नया enum Keyword

Scala 3 में प्रथम-श्रेणी का enum construct जोड़ा गया है। यह Scala 2 के विस्तृत sealed-trait-plus-case-objects pattern को संक्षिप्त syntax से बदलता है।

  • हर case enum type का एक value बन जाता है।
  • Compiler उपयोगी helpers अपने-आप generate करता है।
enum Color:
  case Red, Green, Blue

object Main:
  def main(args: Array[String]): Unit =
    println(Color.Red)

सभी Values की सूची बनाना

हर simple enum को values (सभी cases की array) और valueOf (नाम से lookup) वाला companion मिलता है।

enum Color:
  case Red, Green, Blue

object Main:
  def main(args: Array[String]): Unit =
    Color.values.foreach(println)
    println(Color.valueOf("Green"))

Ordinal और Name

हर enum value में ordinal (शून्य से शुरू होने वाली position) और उसके case name का उपयोग करने वाला generated toString होता है।

enum Color:
  case Red, Green, Blue

object Main:
  def main(args: Array[String]): Unit =
    println(Color.Blue.ordinal)
    println(Color.Red.ordinal)

Parameters वाले Enums

Enum cases constructor parameters ले सकते हैं, जिससे हर value के साथ संबंधित data जुड़ जाता है। यह RGB codes या planet masses जैसे constants रखने के लिए उपयोगी है।

enum Planet(val mass: Double):
  case Earth extends Planet(5.97e24)
  case Mars  extends Planet(6.42e23)

object Main:
  def main(args: Array[String]): Unit =
    println(Planet.Earth.mass)
    println(Planet.Mars.mass)

Enums पर Methods

आप enum body के अंदर methods define कर सकते हैं। वे हर value पर उपलब्ध होते हैं, ठीक class के methods की तरह।

enum Direction:
  case North, South, East, West
  def opposite: Direction = this match
    case North => South
    case South => North
    case East  => West
    case West  => East

object Main:
  def main(args: Array[String]): Unit =
    println(Direction.North.opposite)

Generic ADT Enums

Enums generic और parameterized हो सकते हैं, जिससे आप algebraic data types model कर सकते हैं। यहाँ एक सरल Option type दिया गया है।

enum Maybe[+A]:
  case Just(value: A)
  case Nothing

object Main:
  def main(args: Array[String]): Unit =
    val a: Maybe[Int] = Maybe.Just(42)
    println(a)

Recursive ADT Enums

Recursive structures के लिए enums विशेष रूप से उपयोगी हैं। Binary tree या linked list cases के समूह के रूप में साफ़-सुथरे ढंग से लिखे जा सकते हैं।

enum Tree[+A]:
  case Leaf(value: A)
  case Branch(left: Tree[A], right: Tree[A])

object Main:
  def main(args: Array[String]): Unit =
    val t = Tree.Branch(Tree.Leaf(1), Tree.Leaf(2))
    println(t)

Enums पर Pattern Matching

Enums sealed होते हैं, इसलिए compiler match की पूर्णता की जाँच कर सकता है। कोई case छूट जाने पर warning मिलती है।

enum Light:
  case Red, Yellow, Green

object Main:
  def action(l: Light): String = l match
    case Light.Red    => "stop"
    case Light.Yellow => "slow"
    case Light.Green  => "go"

  def main(args: Array[String]): Unit =
    println(action(Light.Green))

Java-Compatible Enums

scala.reflect.Enum से derive करके extends java.lang.Enum behavior अपने-आप जोड़ें; वास्तविक Java interop के लिए enum X extends Enum[X] लिखें... लेकिन अधिकांश कोड plain form का उपयोग करता है, जो आवश्यकता पड़ने पर Java के साथ अच्छी तरह interoperate करता है।

enum Suit:
  case Hearts, Diamonds, Clubs, Spades

object Main:
  def main(args: Array[String]): Unit =
    println(Suit.values.length)
    println(Suit.Spades.ordinal)

Fields और Methods को मिलाना

समृद्ध domain models के लिए आप parameterized cases को shared methods के साथ मिला सकते हैं।

enum Currency(val symbol: String):
  case USD extends Currency("$")
  case EUR extends Currency("\u20ac")
  def format(amount: Double): String = s"$symbol$amount"

object Main:
  def main(args: Array[String]): Unit =
    println(Currency.USD.format(9.99))

enum का उपयोग कब करें

जब आपके पास choices का बंद set या algebraic data type हो, तब enum का उपयोग करें।

  • साधारण enumerations के लिए simple cases।
  • ADTs और sum types के लिए parameterized cases।
  • स्वचालित exhaustiveness checks refactors को सुरक्षित बनाते हैं।
enum Result[+E, +A]:
  case Ok(value: A)
  case Err(error: E)

object Main:
  def main(args: Array[String]): Unit =
    val r: Result[String, Int] = Result.Ok(7)
    println(r)

त्वरित जाँच

Scala 3 enums की अपनी समझ जाँचें।

पुनरावृत्ति

आपने Scala 3 enums सीखे।

  • संक्षिप्त enum sealed-trait boilerplate को बदलता है।
  • Simple enums को values, valueOf और ordinal मिलते हैं।
  • Associated data के लिए cases parameters ले सकते हैं।
  • Generic और recursive enums ADTs को model करते हैं।
  • Sealed nature exhaustive pattern matching सक्षम करती है।
enum Weekday:
  case Mon, Tue, Wed, Thu, Fri
  def isStart: Boolean = this == Mon

object Main:
  def main(args: Array[String]): Unit =
    println(Weekday.Mon.isStart)
    println(Weekday.values.length)
शुरुआत निःशुल्क

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

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

पाठ्यक्रम
39
पाठ
143

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

क्या “Scala 3 में Enums” पाठ निःशुल्क है?

हाँ—“Scala 3 में Enums” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Scala 3 में Enums” में मैं क्या सीखूँगा?

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

क्या बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“Scala 3 में Enums” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. Significant Indentation
  2. Scala 3 में Enums
  3. अपारदर्शी प्रकार
  4. यूनियन और इंटरसेक्शन प्रकार
← बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पर वापस जाएँ