सर्वोत्तम अभ्यास
ऑपरेटरों को सहज बनाए रखें
सर्वोत्तम अभ्यास, CoddyKit पर Kotlin Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Kotlin Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
ऑपरेटरों को सहज बनाए रखें
किसी ऑपरेटर को तभी ओवरलोड कीजिए जब उसका अर्थ स्पष्ट हो। वेक्टर पर + स्पष्ट है; + का अर्थ ईमेल भेजना हो, तो यह स्पष्ट नहीं है।
data class Vec(val x: Int, val y: Int) {
operator fun plus(o: Vec) = Vec(x + o.x, y + o.y)
}
fun main() {
println(Vec(1, 2) + Vec(3, 4))
}अपेक्षित अर्थविज्ञान बनाए रखें
प्रचलित बीजगणितीय नियमों का पालन कीजिए: सममित प्रकारों के लिए a + b में क्रम-विनिमेयता का स्वाभाविक आभास होना चाहिए और पाठकों को चौंकाना नहीं चाहिए।
data class Money(val cents: Int) {
operator fun plus(o: Money) = Money(cents + o.cents)
}
fun main() {
println(Money(100) + Money(50))
}अपरिवर्तनीयता को प्राथमिकता दें
plus जैसे ऑपरेटर रिसीवर को बदलने के बजाय नया मान लौटाएँ, जैसा संख्याओं के साथ होता है।
data class Point(val x: Int) {
operator fun plus(o: Point) = Point(x + o.x)
}
fun main() {
val a = Point(1)
val b = a + Point(2)
println("${a.x} ${b.x}")
}plus बनाम plusAssign
अपरिवर्तनीय मानों के लिए plus परिभाषित कीजिए; परिवर्तनशील कंटेनरों को उसी स्थान पर बदलने के लिए plusAssign परिभाषित कीजिए। दोनों को परस्पर विरोधी व्यवहार के साथ परिभाषित करने से बचिए।
class Cart {
val items = mutableListOf<String>()
operator fun plusAssign(item: String) { items.add(item) }
}
fun main() {
val c = Cart()
c += "book"
println(c.items)
}वापसी के प्रकार मिलाएँ
द्विआधारी ऑपरेटरों से वही प्रकार लौटाइए, ताकि परिणाम स्वाभाविक रूप से श्रृंखलाबद्ध हो सकें।
data class N(val v: Int) {
operator fun plus(o: N) = N(v + o.v)
}
fun main() {
println((N(1) + N(2) + N(3)).v)
}चतुराई दिखाने के लिए ओवरलोड न करें
यदि कोई नामित फ़ंक्शन बेहतर पढ़ा जाता है, तो उसका उपयोग कीजिए। ऑपरेटर वास्तविक संख्यात्मक या कंटेनर-जैसे अर्थों के लिए हैं, पहेलियों के लिए नहीं।
data class Log(val lines: List<String>) {
fun append(line: String) = Log(lines + line)
}
fun main() {
println(Log(emptyList()).append("start").lines)
}equals और hashCode में संगति रखें
यदि आप तुलना या समानता को ओवरलोड करते हैं, तो टूटी हुई संग्रह-संरचनाओं से बचने के लिए equals और hashCode में संगति बनाए रखिए।
data class Id(val v: Int)
fun main() {
val set = hashSetOf(Id(1), Id(1))
println(set.size)
}ऑपरेटर की प्राथमिकता पर ध्यान दें
ओवरलोड किए गए ऑपरेटर अंतर्निहित प्राथमिकता बनाए रखते हैं। इस तरह अभिकल्पना कीजिए कि स्वाभाविक प्राथमिकता अपेक्षित परिणाम दे।
data class N(val v: Int) {
operator fun plus(o: N) = N(v + o.v)
operator fun times(o: N) = N(v * o.v)
}
fun main() {
println((N(2) + N(3) * N(4)).v)
}आश्चर्यजनक ऑपरेटरों का दस्तावेज़ीकरण करें
यदि कोई ऑपरेटर गैर-स्पष्ट कार्य करता है, तो टिप्पणी या KDoc जोड़िए, ताकि कॉल करने वाले भ्रमित न हों।
data class Range2(val start: Int, val end: Int) {
// contains: is value inside the range?
operator fun contains(v: Int) = v in start..end
}
fun main() {
println(5 in Range2(1, 10))
}in के लिए contains का उपयोग करें
in ऑपरेटर का मानचित्रण contains से होता है। इसे तभी ओवरराइड कीजिए जब आपके प्रकार के लिए सदस्यता स्पष्ट रूप से परिभाषित हो।
class Team(val members: List<String>) {
operator fun contains(name: String) = name in members
}
fun main() {
val t = Team(listOf("Ann", "Bo"))
println("Ann" in t)
}संदेह होने पर फ़ंक्शन का उपयोग करें
स्पष्ट नाम वाली विधि लगभग हमेशा अस्पष्ट ऑपरेटर से अधिक सुरक्षित होती है। ओवरलोडिंग तभी कीजिए जब इससे वास्तव में पठनीयता बेहतर हो।
data class Temperature(val c: Int) {
fun warmerThan(o: Temperature) = c > o.c
}
fun main() {
println(Temperature(30).warmerThan(Temperature(20)))
}त्वरित जाँच
ऑपरेटर ओवरलोडिंग की सर्वोत्तम प्रथाओं की अपनी समझ का परीक्षण कीजिए।
पुनरावलोकन
आपने ऑपरेटर ओवरलोडिंग की सर्वोत्तम प्रथाएँ सीखीं:
- ओवरलोडिंग तभी कीजिए जब अर्थ स्पष्ट और प्रचलित हो।
- अपरिवर्तनीय, समान-प्रकार वाले वापसी मानों को प्राथमिकता दें; परिणामों को श्रृंखलाबद्ध बनाए रखें।
plus(मान) औरplusAssign(परिवर्तन) को अलग रखें।equals/hashCodeमें संगति रखें; जहाँ अधिक स्पष्ट हो, वहाँ नामित फ़ंक्शन को प्राथमिकता दें।
data class V(val x: Int) {
operator fun plus(o: V) = V(x + o.x)
}
fun main() {
println((V(2) + V(5)).x)
}एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “सर्वोत्तम अभ्यास” पाठ निःशुल्क है?
हाँ — Kotlin Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “सर्वोत्तम अभ्यास” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“सर्वोत्तम अभ्यास” में मैं क्या सीखूँगा?
ऑपरेटरों को सहज बनाए रखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Kotlin Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Kotlin Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Kotlin Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“सर्वोत्तम अभ्यास” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Kotlin Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Kotlin Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- ऑपरेटर फ़ंक्शन
- तुलना ऑपरेटर
- इंडेक्स और invoke
- सर्वोत्तम अभ्यास