Swift Academy · पाठ

ऑपरेटर ओवरलोडिंग और precedence समूह

अपने प्रकारों के लिए अंतर्निहित ऑपरेटर ओवरलोड करें और precedence groups परिभाषित करें, ताकि expressions इच्छित रूप से parse हों। डिज़ाइन को सरल और पूर्वानुमेय रखें।

पाठ 1, कुल 3 में से8 चरण

ऑपरेटर ओवरलोडिंग और precedence समूह, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 3 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

ऑपरेटरों को अनुकूलित क्यों करें

Swift आपको अपने प्रकारों के लिए ऑपरेटरों को ओवरलोड करने और नए ऑपरेटर बनाने देता है। इनका संयम से उपयोग करें: स्पष्टता को प्राथमिकता दें, व्यवहार का दस्तावेज़ बनाएँ और आश्चर्यों से बचने के लिए प्राथमिकता निर्धारित करें।

पहले से बने ऑपरेटर को ओवरलोड करना

किसी मौजूदा ऑपरेटर को ओवरलोड करने के लिए उसी प्रतीक और अपने प्रकार वाला मुक्त फ़ंक्शन लिखें। अर्थविज्ञान को पूर्वानुमेय रखें, जैसे + मानों को जोड़ता है।

struct Vector2D: CustomStringConvertible, Equatable {
    var x: Double
    var y: Double
    var description: String { "(\(x), \(y))" }
}
func + (lhs: Vector2D, rhs: Vector2D) -> Vector2D {
    Vector2D(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
}
func == (lhs: Vector2D, rhs: Vector2D) -> Bool {
    lhs.x == rhs.x && lhs.y == rhs.y
}
let a = Vector2D(x: 1, y: 2)
let b = Vector2D(x: 3, y: 4)
let c = a + b
print(c)     // (4.0, 6.0)

कस्टम ऑपरेटर और प्राथमिकता

प्राथमिकता-समूह घोषित करके उसे अपने ऑपरेटर से जोड़िए। दायाँ साहचर्य 2 ** 3 ** 2 को 2 ** (3 ** 2) के रूप में पार्स करता है।

// Define power operator ** with right-associative precedence
precedencegroup PowerPrecedence {
    higherThan: MultiplicationPrecedence
    associativity: right
}
infix operator ** : PowerPrecedence

// Simple integer exponent (education-only; no overflow checks)
func ** (base: Int, exp: Int) -> Int {
    guard exp >= 0 else { return 0 }   // keep it simple for demo
    if exp == 0 { return 1 }
    var result = 1
    for _ in 0..<exp { result *= base }
    return result
}
print(2 ** 3)          // 8
print(2 ** 3 ** 2)     // 2 ** (3 ** 2) = 2 ** 9 = 512 (right-assoc)

प्रीफ़िक्स/पोस्टफ़िक्स ऑपरेटर

आप प्रीफ़िक्स/पोस्टफ़िक्स ऑपरेटर परिभाषित कर सकते हैं। इनका उपयोग केवल स्पष्ट गणितीय क्षेत्रों के लिए कीजिए और ऐसे अर्थों से बचिए जो उपयोगकर्ता को चौंका सकते हैं।

prefix operator √
prefix func √ (x: Double) -> Double { x.squareRoot() }

postfix operator !
postfix func ! (x: Bool) -> Bool { !x }  // purely demo; avoid confusing overrides

print(√9)     // 3.0
print(true!)  // false (demo only — don't ship this)

व्यवहार में प्राथमिकता

बिल्ट-इन प्राथमिकताओं, जैसे MultiplicationPrecedence, के सापेक्ष अपनी प्राथमिकता सावधानी से तय कीजिए। पठनीयता और आशय की पुष्टि करने के लिए व्यंजकों का परीक्षण कीजिए।

// Demonstrate how precedence affects parsing
// Our PowerPrecedence is higher than Multiplication.
// So this parses as: 2 * (3 ** 2) = 18
let r1 = 2 * 3 ** 2
print(r1)

// Compare if we had lower precedence (hypothetical):
// Then it would parse as (2 * 3) ** 2 = 36

सर्वोत्तम अभ्यास

दिशा-निर्देश:

  • गैर-मानक क्रियाओं के लिए विधियों को प्राथमिकता दीजिए; ऑपरेटर केवल परिचित गणितीय/बिटवाइज़ क्रियाओं के लिए रखिए।
  • उपयोगकर्ता की अपेक्षाओं के अनुरूप रहिए (+ जोड़ता है, * गुणा करता है)।
  • कस्टम ऑपरेटरों का दस्तावेज़ीकरण कीजिए और उनकी संख्या कम रखिए।
  • अस्पष्ट पार्सिंग से बचने के लिए प्राथमिकता और साहचर्य परिभाषित कीजिए।

ऑपरेटर सही ढंग से घोषित करना

त्वरित जाँच: प्राथमिकता-समूह के साथ नया ऑपरेटर जोड़ने का सही तरीका कौन-सा है?

पुनरावलोकन

पुनरावलोकन: ऑपरेटरों का ओवरलोड तभी कीजिए जब उनका अर्थ स्पष्ट हो; पार्सिंग नियंत्रित करने के लिए प्राथमिकता-समूह और साहचर्य परिभाषित कीजिए; स्पष्टता के लिए व्यंजकों का परीक्षण कीजिए।

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

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

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

पाठ्यक्रम
122
पाठ
409

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

क्या “ऑपरेटर ओवरलोडिंग और precedence समूह” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “ऑपरेटर ओवरलोडिंग और precedence समूह” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“ऑपरेटर ओवरलोडिंग और precedence समूह” में मैं क्या सीखूँगा?

अपने प्रकारों के लिए अंतर्निहित ऑपरेटर ओवरलोड करें और precedence groups परिभाषित करें, ताकि expressions इच्छित रूप से parse हों। डिज़ाइन को सरल और पूर्वानुमेय रखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“ऑपरेटर ओवरलोडिंग और precedence समूह” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. ऑपरेटर ओवरलोडिंग और precedence समूह
  2. सबस्क्रिप्ट और कस्टम इंडेक्स पर पुनरावलोकन
  3. Hashable/Equatable/Comparable derivation
← Swift Academy पर वापस जाएँ