कोटलिन ऑपरेटर ओवरलोडिंग (उदाहरणों के साथ)

विषय - सूची

इस लेख में, आप उदाहरणों की सहायता से ऑपरेटर ओवरलोडिंग के बारे में जानेंगे (परिभाषित करें कि ऑपरेटर उपयोगकर्ता की तरह वस्तुओं के लिए कैसे काम करता है)।

जब आप कोटलिन में ऑपरेटर का उपयोग करते हैं, तो यह संबंधित सदस्य फ़ंक्शन कहलाता है। उदाहरण के लिए, अभिव्यक्ति हुड के नीचे a+bबदल जाती है a.plus(b)

 fun main(args: Array) ( val a = 5 val b = 10 print(a.plus(b)) // print(a+b) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 १५

वास्तव में, plus()विभिन्न कोटलिन बुनियादी प्रकारों के साथ काम करने के लिए फ़ंक्शन अतिभारित है और String

 // + ऑपरेटर के लिए बुनियादी प्रकार ऑपरेटर मज़ा प्लस (अन्य: बाइट): इंट ऑपरेटर मज़ा प्लस (अन्य: लघु): इंट ऑपरेटर मज़ा प्लस (अन्य: इंट): इंट ऑपरेटर मज़ा प्लस (अन्य: लंबा): लंबे ऑपरेटर मज़ा प्लस (अन्य: फ्लोट): फ्लोट ऑपरेटर मज़ेदार प्लस (अन्य: डबल): स्ट्रिंग कॉन्फैक्शन ऑपरेटर के लिए डबल // स्ट्रिंग। अधिशेष (अन्य: कोई भी?): स्ट्रिंग 

आप यह भी परिभाषित कर सकते हैं कि ऑपरेटर अपने संबंधित फ़ंक्शन को ओवरलोड करके ऑब्जेक्ट के लिए कैसे काम करता है। उदाहरण के लिए, आपको परिभाषित करना होगा कि +ऑपरेटर ओवरलोडिंग plus()फ़ंक्शन द्वारा ऑब्जेक्ट के लिए कैसे काम करता है।

उदाहरण: ओवरलोडिंग + ऑपरेटर

 fun main(args: Array) ( val p1 = Point(3, -8) val p2 = Point(2, 9) var sum = Point() sum = p1 + p2 println("sum = ($(sum.x), $(sum.y))") ) class Point(val x: Int = 0, val y: Int = 10) ( // overloading plus function operator fun plus(p: Point) : Point ( return Point(x + p.x, y + p.y) ) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 योग = (5, 1)

यहां, plus()फ़ंक्शन को operatorसंकलक को बताने के लिए कीवर्ड के साथ चिह्नित किया +जाता है कि ऑपरेटर ओवरलोड हो रहा है।

अभिव्यक्ति p1 + p2को p1.plus(p2)हुड के नीचे बदल दिया जाता है।

उदाहरण: - ऑपरेटर ओवरलोडिंग

इस उदाहरण में, आप --ऑपरेटर को अधिभारित करना सीखेंगे । अभिव्यक्ति --aको a.dec()हुड के नीचे बदल दिया जाता है।

dec()सदस्य समारोह किसी भी तर्क नहीं लेता है।

 fun main(args: Array) ( var point = Point(3, -8) --point println("point = ($(point.x), $(point.y))") ) class Point(var x: Int = 0, var y: Int = 10) ( operator fun dec() = Point(--x, --y) )

जब आप कार्यक्रम चलाते हैं, तो निम्न होगा:

 बिंदु = (2, -9) 

उसे याद रखो,

 ऑपरेटर का मज़ा () = बिंदु (- x, --y)

के बराबर है

 ऑपरेटर मज़ा डिक (): पॉइंट (रिटर्न पॉइंट (- x, --y))

कुछ महत्वपूर्ण बिंदु

1. जब आप ऑपरेटरों को ओवरलोड करते हैं, तो आपको ऑपरेटर की मूल भावना को बनाए रखने की कोशिश करनी चाहिए। उदाहरण के लिए,

 fun main(args: Array) ( val p1 = Point(3, -8) val p2 = Point(2, 9) var sum = Point() sum = p1 + p2 println("sum = ($(sum.x), $(sum.y))") ) class Point(val x: Int = 0, val y: Int = 10) ( // overloading plus function operator fun plus(p: Point) = Point(x - p.x, y - p.y) )

यद्यपि उपरोक्त कार्यक्रम तकनीकी रूप से सही है, हमने +ऑपरेटर को दो वस्तुओं के संबंधित गुणों को घटाने के लिए उपयोग किया है, जिसने प्रोग्राम को भ्रमित कर दिया है।

2. स्काला जैसी भाषाओं के विपरीत, केवल ऑपरेटरों का एक विशिष्ट सेट कोटलिन में ओवरलोड हो सकता है। कोटलिन और उनके संबंधित सदस्य कार्यों में ओवरलोड किए जा सकने वाले ऑपरेटरों के बारे में जानने के लिए पृष्ठ पर जाएँ।

दिलचस्प लेख...