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

Inline Methods

Scala 3 inline

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

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

inline क्या है

Scala 3 में inline keyword compiler को compilation के दौरान call site पर किसी definition को विस्तारित करने का निर्देश देता है। पूर्ण macros से पहले यही metaprogramming का प्रवेश-बिंदु है।

एक inline method

किसी method को inline चिह्नित करने पर उसका body जहाँ भी उसे call किया जाता है, वहाँ substitute हो जाता है। इससे call overhead हट सकता है और compile-time specialization संभव हो सकती है।

inline def square(x: Int): Int = x * x

val r = square(5) // compiles to 5 * 5

Inline parameters

inline parameter अपने argument को भी inline करने के लिए बाध्य करता है। यदि argument constant हो, तो compiler उसे literal में fold कर सकता है।

inline def power(x: Int, inline n: Int): Int =
  if (n == 0) 1 else x * power(x, n - 1)

Constant folding

जब inline parameters literals होते हैं, तो branches और recursion को compile time पर पूरी तरह resolve किया जा सकता है और bytecode में केवल अंतिम expression बचता है।

inline def power(x: Int, inline n: Int): Int =
  if (n == 0) 1 else x * power(x, n - 1)

val c = power(2, 3) // expands to 2 * 2 * 2 * 1

inline if और inline match

Inline method के भीतर inline if और inline match compile time पर resolve होते हैं, जब scrutinee statically ज्ञात हो, और dead branches हट जाती हैं।

inline def label(inline b: Boolean): String =
  inline if (b) "yes" else "no"

Transparent inline

transparent inline method के return type को प्रत्येक call site के अनुसार refine करने देता है — compiler घोषित type से अधिक specific type infer कर सकता है।

transparent inline def first(inline b: Boolean): Any =
  inline if (b) 1 else "x" // type can be Int or String

compiletime.error

scala.compiletime package में error जैसे tools होते हैं, जो custom message के साथ compilation विफल कर सकते हैं — inline arguments को validate करने के लिए उपयोगी।

import scala.compiletime.error

inline def positive(inline n: Int): Int =
  inline if (n <= 0) error("n must be positive") else n

Inline values

inline val वास्तविक compile-time constant होता है। इसका उपयोग वहाँ किया जा सकता है जहाँ literals आवश्यक हों, जैसे अन्य inline computations में।

inline val MaxRetries = 3

inline def retries: Int = MaxRetries

Performance बनाम code size

Inlining, code size के बदले speed और compile-time guarantees देता है। बड़े bodies पर इसका अत्यधिक उपयोग bytecode को अनावश्यक रूप से बड़ा कर देता है, इसलिए इसे छोटे, बार-बार चलने वाले या specialization के लिए महत्वपूर्ण methods तक सीमित रखें।

Inline के बिना चलने योग्य

यहाँ वही squaring logic एक साधारण स्वतंत्र program के रूप में दिया गया है। Inline version call site पर multiplication को विस्तारित करके समान परिणाम देगा।

object Main {
  def square(x: Int): Int = x * x
  def main(args: Array[String]): Unit = {
    println(square(5)) // 25
  }
}

Inline ही आधार है

Macros, inline methods पर आधारित होते हैं: inline def code generate करने के लिए macro को call कर सकता है। पहले inline में निपुण होने से macro layer को समझना बहुत आसान हो जाता है।

त्वरित जाँच

Inline method में transparent जोड़ने से क्या बदलता है?

पुनरावलोकन

आपने Scala 3 inlining सीखी:

  • inline def call site पर विस्तारित होता है
  • inline parameters और constant folding
  • inline if / inline match
  • transparent inline, inline val, compiletime.error

अगला विषय: macro की मूल बातें।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Inline Methods
  2. Macros की मूल बातें
  3. Quotes और Splices
  4. व्यावहारिक Macros
← बैकएंड इंजीनियरिंग और कार्यात्मक प्रोग्रामिंग के लिए Scala पर वापस जाएँ