कोटलिन डेटा क्लास

इस लेख में, आप कोटलिन में डेटा कक्षाएं बनाना सीखेंगे। आप उन आवश्यकताओं के बारे में भी जानेंगे जिन्हें डेटा वर्ग को पूरा करना होगा, और उनकी मानक कार्यक्षमताएँ।

ऐसी स्थिति उत्पन्न हो सकती है जहां आपको डेटा रखने के लिए पूरी तरह से एक वर्ग बनाने की आवश्यकता होती है। ऐसे मामलों में, आप dataडेटा वर्ग बनाने के लिए वर्ग को चिह्नित कर सकते हैं । उदाहरण के लिए,

 डेटा वर्ग व्यक्ति (वैल नाम: स्ट्रिंग, संस्करण आयु: इंट)

इस वर्ग के लिए, संकलक स्वचालित रूप से उत्पन्न करता है:

  • copy()फ़ंक्शन, equals()और hashCode()जोड़ी, और toString()प्राथमिक निर्माता का रूप
  • componentN() कार्य करता है

इन विशेषताओं के बारे में विस्तार से बात करने से पहले, हम उन आवश्यकताओं के बारे में बात करते हैं जो एक डेटा वर्ग को पूरी करनी चाहिए।

कोटलिन डेटा क्लास आवश्यकताएँ

यहाँ आवश्यकताएं हैं:

  • प्राथमिक निर्माता के पास कम से कम एक पैरामीटर होना चाहिए।
  • प्राथमिक कंस्ट्रक्टर के मापदंडों को या तो val(केवल पढ़ने के लिए) या var(रीड-राइट) के रूप में चिह्नित किया जाना चाहिए ।
  • वर्ग खुला, सार, आंतरिक या सील नहीं किया जा सकता है।
  • वर्ग अन्य वर्गों का विस्तार कर सकता है या इंटरफेस लागू कर सकता है। यदि आप 1.1 से पहले कोटलिन संस्करण का उपयोग कर रहे हैं, तो वर्ग केवल इंटरफेस को लागू कर सकता है।

उदाहरण: कोटलिन डेटा क्लास

 data class User(val name: String, val age: Int) fun main(args: Array) ( val jack = User("jack", 29) println("name = $(jack.name)") println("age = $(jack.age)") )

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

 नाम = जैक आयु = २ ९

जब आप एक डेटा वर्ग घोषित, संकलक स्वचालित रूप से इस तरह के रूप में कई कार्यों को उत्पन्न करता है toString(), equals(), hashcode()आदि पर्दे के पीछे। यह आपको कोड संक्षिप्त रखने में मदद करता है। यदि आपने जावा का उपयोग किया था, तो आपको बहुत सारे बॉयलरप्लेट कोड लिखना होगा।

आइए इन कार्यों का उपयोग करें:

नकल करना

डेटा वर्ग के लिए, आप copy()फ़ंक्शन के उपयोग से इसके कुछ गुणों के साथ किसी ऑब्जेक्ट की एक प्रतिलिपि बना सकते हैं । यह ऐसे काम करता है:

 data class User(val name: String, val age: Int) fun main(args: Array) ( val u1 = User("John", 29) // using copy function to create an object val u2 = u1.copy(name = "Randy") println("u1: name = $(u1.name), name = $(u1.age)") println("u2: name = $(u2.name), name = $(u2.age)") )

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

 u1: नाम = जॉन, नाम = 29 u2: नाम = रैंडी, नाम = 29

.String () विधि

TheString () फ़ंक्शन ऑब्जेक्ट का एक स्ट्रिंग प्रतिनिधित्व लौटाता है।

 data class User(val name: String, val age: Int) fun main(args: Array) ( val u1 = User("John", 29) println(u1.toString()) )

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

 उपयोगकर्ता (नाम = जॉन, आयु = 29)

हैशकोड () और बराबर ()

hasCode()वस्तु के लिए विधि रिटर्न हैश कोड। यदि दो ऑब्जेक्ट समान हैं, hashCode()तो एक ही पूर्णांक परिणाम उत्पन्न करता है। अनुशंसित पढ़ना: हैशकोड ()

equals()रिटर्न trueदो वस्तुओं अगर बराबर (समान है कर रहे हैं hashCode())। यदि ऑब्जेक्ट समान नहीं हैं, तो equals()रिटर्न falseअनुशंसित पढ़ना: बराबर ()

 data class User(val name: String, val age: Int) fun main(args: Array) ( val u1 = User("John", 29) val u2 = u1.copy() val u3 = u1.copy(name = "Amanda") println("u1 hashcode = $(u1.hashCode())") println("u2 hashcode = $(u2.hashCode())") println("u3 hashcode = $(u3.hashCode())") if (u1.equals(u2) == true) println("u1 is equal to u2.") else println("u1 is not equal to u2.") if (u1.equals(u3) == true) println("u1 is equal to u3.") else println("u1 is not equal to u3.") )

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

u1 हैशकोड = 71750738 यू 2 हैशकोड = 71750738 यू 3 हैशकोड = 771732263 यू 1 यू 2 के बराबर है। u1, u3 के बराबर नहीं है।

विनाशकारी घोषणाएँ

आप एक ऑब्जेक्ट को विनाशकारी घोषणा का उपयोग करके कई चर में नष्ट कर सकते हैं। उदाहरण के लिए:

 डेटा वर्ग उपयोगकर्ता (वैल नाम: स्ट्रिंग, वैल आयु: इंट, वैल लिंग: स्ट्रिंग) fun main(args: Array) ( val u1 = User("John", 29, "Male") val (name, age, gender) = u1 println("name = $name") println("age = $age") println("gender = $gender") )

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

 नाम = जॉन की आयु = 29 लिंग = पुरुष

यह संभव था क्योंकि कंपाइलर componentN()एक डेटा वर्ग के लिए सभी गुण उत्पन्न करता है। उदाहरण के लिए:

 data class User(val name: String, val age: Int, val gender: String) fun main(args: Array) ( val u1 = User("John", 29, "Male") println(u1.component1()) // John println(u1.component2()) // 29 println(u1.component3()) // "Male" )

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

 जॉन 29 पुरुष

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