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

Transformations

map, filter और flatMap

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

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

संग्रहों का रूपांतरण

Scala संग्रह डिफ़ॉल्ट रूप से अपरिवर्तनीय होते हैं। उन्हें बदलने के बजाय map, filter और flatMap जैसी मेथड से नए संग्रह में रूपांतरित करें।

object Main {
  def main(args: Array[String]): Unit = {
    val nums = List(1, 2, 3, 4)
    val doubled = nums.map(_ * 2)
    println(nums)
    println(doubled)
  }
}

map: हर तत्व का रूपांतरण

map प्रत्येक तत्व पर एक फ़ंक्शन लागू करता है और उसी आकार का नया संग्रह लौटाता है। तत्व का प्रकार बदल सकता है।

object Main {
  def main(args: Array[String]): Unit = {
    val words = List("scala", "rocks")
    val lengths = words.map(_.length)
    println(lengths)
  }
}

अंडरस्कोर का संक्षिप्त रूप

अंडरस्कोर _ एकल फ़ंक्शन पैरामीटर का संक्षिप्त रूप है। _ * 2 का अर्थ x => x * 2 है। इससे सरल रूपांतरण संक्षिप्त रहते हैं।

object Main {
  def main(args: Array[String]): Unit = {
    val nums = List(10, 20, 30)
    println(nums.map(_ + 1))
    println(nums.map(x => x + 1))
  }
}

filter: मेल खाते तत्व रखना

filter केवल वे तत्व रखता है जिनके लिए प्रेडिकेट true लौटाता है। परिणाम मूल संग्रह से छोटा हो सकता है।

object Main {
  def main(args: Array[String]): Unit = {
    val nums = (1 to 10).toList
    val evens = nums.filter(_ % 2 == 0)
    println(evens)
  }
}

filterNot: विपरीत कार्य

filterNot उन तत्वों को रखता है जिनके लिए प्रेडिकेट false होता है। यह filter का पूरक है।

object Main {
  def main(args: Array[String]): Unit = {
    val nums = List(1, 2, 3, 4, 5)
    println(nums.filterNot(_ % 2 == 0))
  }
}

flatMap: map फिर समतल करना

flatMap प्रत्येक तत्व के लिए ऐसा फ़ंक्शन लागू करता है जो एक संग्रह लौटाता है, फिर परिणामों को एक संग्रह में समतल कर देता है।

object Main {
  def main(args: Array[String]): Unit = {
    val words = List("ab", "cd")
    val chars = words.flatMap(_.toList)
    println(chars)
  }
}

map बनाम flatMap

यदि आपका फ़ंक्शन कोई संग्रह लौटाता है, तो map नेस्टेड संग्रह देता है, जबकि flatMap एक समतल संग्रह देता है। अपनी आवश्यक संरचना के आधार पर चुनें।

object Main {
  def main(args: Array[String]): Unit = {
    val nums = List(1, 2, 3)
    println(nums.map(n => List(n, n)))
    println(nums.flatMap(n => List(n, n)))
  }
}

Option के साथ flatMap

Option की सूची पर flatMap करने से None मान हट जाते हैं और Some मान खुल जाते हैं। यह एक साथ फ़िल्टर और रूपांतरण करने का सुविधाजनक तरीका है।

object Main {
  def main(args: Array[String]): Unit = {
    val raw = List("1", "x", "3", "y")
    val parsed = raw.flatMap(_.toIntOption)
    println(parsed)
  }
}

collect: फ़िल्टर और map साथ-साथ

collect एक आंशिक फ़ंक्शन लेता है: यह केवल उन्हीं तत्वों को रखता और बदलता है जिनके लिए फ़ंक्शन परिभाषित है, यानी एक ही चरण में filter और map को मिलाता है।

object Main {
  def main(args: Array[String]): Unit = {
    val mixed: List[Any] = List(1, "two", 3, "four", 5)
    val ints = mixed.collect { case i: Int => i * 10 }
    println(ints)
  }
}

रूपांतरणों को जोड़ना

क्योंकि प्रत्येक मेथड एक नया संग्रह लौटाती है, आप उन्हें एक पठनीय पाइपलाइन में जोड़ सकते हैं। प्रत्येक चरण पिछले चरण के आउटपुट को रूपांतरित करता है।

object Main {
  def main(args: Array[String]): Unit = {
    val result = List(1, 2, 3, 4)
      .map(_ + 1)
      .filter(_ % 2 == 0)
    println(result)
  }
}

एक साफ़ पाइपलाइन

यहाँ एक सुव्यवस्थित रूपांतरण पाइपलाइन है: सम संख्याओं को फ़िल्टर करें, उनका वर्ग करें, फिर बड़ी संख्याएँ रखें। पाइपलाइन डेटा के प्रवाह का वर्णन करने जैसी लगती हैं।

object Main {
  def main(args: Array[String]): Unit = {
    val result = (1 to 10).toList
      .filter(_ % 2 == 0)
      .map(x => x * x)
      .filter(_ > 10)
    println(result)
  }
}

त्वरित जाँच

List("ab", "cd").flatMap(_.toList) क्या लौटाता है?

पुनरावृत्ति

आपने मुख्य रूपांतरण सीखे:

  • map — प्रत्येक तत्व का रूपांतरण, आकार समान रहता है
  • filter / filterNot — शर्त के आधार पर रखना या हटाना
  • flatMap — पहले रूपांतरण, फिर नेस्ट किए गए परिणामों को समतल करना
  • collect — आंशिक फ़ंक्शन से छाँटना और रूपांतरण करना
  • उन्हें जोड़कर पठनीय, अपरिवर्तनीय पाइपलाइन बनाएँ
शुरुआत निःशुल्क

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

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

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

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

क्या “Transformations” पाठ निःशुल्क है?

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

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

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

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

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

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

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

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

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

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

  1. List, Vector, Set, Map
  2. Transformations
  3. Folding और Reducing
  4. Grouping और Sorting
← बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पर वापस जाएँ