Kotlin in Hindi – Destructuring Declarations

  • Introduction to Destructing declarations in Hindi
  • Kotlin destructuring maps in Hindi
  • Kotlin destructuring lambdas in Hindi

Introduction to Kotlin Destructuring Declarations

एक object structure बहुत से variables से मिलकर बना होता है। उन variables को object के नाम द्वारा ही access किया जाता है। जिस प्रकार एक object structure variables से मिलकर बनता है उसी प्रकार object को destructure करके variables को extract किया जा सकता है। इस process को destructuring declarations के द्वारा perform किया जाता है।

कई बार ऐसा हो सकता है की एक object को कई variables के रूप में destructure करना आपके लिए महत्वपूर्ण हो। उदाहरण के लिए class में define किया गया कोई function सिर्फ एक ही value return कर सकता है।

लेकिन object को destructure करके आप उस class से सभी variables को extract कर सकते है फिर चाहे वे function में ही क्यों नहीं define किये गए हो।

Objects को destructure करने की ये ability programmers के लिए complex situations में भी solution प्राप्त करने की कई नयी possibilities generate करती है।

Syntax of Destructuring Declarations

Objects को destructure करने के लिए kotlin आपको special syntax provide करती है। यह syntax लगभग function call करने जैसा ही है।

val (variable1, variable2) = objectName

ऊपर दिया गया syntax आप एक object में से दो variables extract करने के लिए प्रयोग कर सकते है।

सबसे पहले आप आप यह बताते है की destructure होने वाले variables को mutable बनाना चाहते है या immutable बनाना चाहते है। यँहा पर ध्यान देने योग्य बात यह है की इससे कोई फर्क नहीं पड़ता है की class में variables mutable थे या immutable थे।

इसके बाद आप round brackets में comma से separate करके उन variables का नाम लिखते है जिन्हें आप destructure करना चाहते है। यह एक function में argument pass करने जैसा ही होता है।

इसके बाद आप assignment operator place करते है और object का नाम define करते है। यही declaration destructuring declaration कहलाता है। क्योंकि इसमें एक object को destructure किया जा सकता है। अब आप brackets में pass किये गए variables को independently use कर सकते है।

Component Functions

जब आप इस प्रकार एक object को destructure करते है तो compiler उसे निचे दी गयी form में translate करके execute करता है।

val variable1 = objectName.component1()
val variable2 = objectName.component2()

Component functions ही वे functions होते है जो object को destructure करते है। आप चाहे तो इस syntax द्वारा भी variables को extract कर सकते है। हर variable को extract करने के लिए आप एक component() function call करना होता है।

Data class के अंदर built in componentN() functions available होते है। इसलिए यदि आप किसी class के object को destructure करना चाहते है तो उसे data modifier के साथ define करते है। हालाँकि आप चाहे तो normal class भी define कर सकते है लेकिन तब आपको उस class में component functions को define करना होगा।

आपको एक बात और ध्यान रखनी चाहिए की जब आप एक class को data modifier के साथ define करते है तो आपको उसे कम से कम primary constructor में एक parameter के साथ define करना होता है।

data class myClass (val n: String, val a: Int)
{
    val Name: String = n
    val Age: Int = a
}

 

fun main(args: Array<String>)
{
    val myObj = myClass(“Best Hindi Tutorials”,3)
 
    val name = myObj.component1()
    val age = myObj.component2()

    println(name)
    println(age)
}

Underscore to Skip Variables

यदि आप destructuring declaration में किसी variable को include नहीं करना चाहते है तो इसके लिए आप उसकी जगह underscore(_) define करते है। Underscore से compiler को पता चलता है की आप उस variable को include नहीं करना चाहते है।

val(_, variable2) = objectName

ऊपर दिए गए code में underscore के माध्यम से यह बताया जा रहा है की variable1 को destructuring declaration में नहीं include किया जाना चाहिए।

Works with For Loops

Destructuring declarations का प्रयोग for loops में भी किया जा सकता है। एक बात आपको ध्यान रखनी चाहिए की destructure declaration के right side में कोई भी element हो सकता है लेकिन शर्त सिर्फ ये होती है की उस पर component functions call किये जाना संभव हो। 

उदाहरण के लिए एक collection में objects stored रहते है। ऐसे में for loop द्वारा आप collection के सभी items पर component method को call कर सकते है और उसकी value variable में store करके उसे independently use कर सकते है। 

for((a,b) in collection ) { … } 

Returning Two Values From Functions

Destructuring declarations के द्वारा आप एक function से दो values भी return कर सकते है। हालाँकि normally एक function से सिर्फ एक ही value return की जा सकती है।

data class myClass(val n: String, val a: Int)
{
   fun myFunction():myClass
   {
       val Name: String = n
       val Age: Int = a

 

       return myClass(Name, Age)
   }
}

fun main(args: Array<String>)
{
   val obj = myClass(“Best Hindi Tutorials”,3)
   val(Name, Age) = obj.myFunction()

   println(Name)
   println(Age)
}

Destructuring Declarations and Maps

Destructuring declarations का प्रयोग आप Maps के साथ भी कर सकते है। Map collection एक key और value का pair होता है।

Map के सभी items को एक sequence में store करके और उसके लिए iterator() function define करके आप for loop द्वारा सभी key और values को variables के रूप में store कर सकते है।

उदाहरण के लिए निचे दिए जा रहे code को देखिये।

for((key,value) in map) {
   // Use key and value here…
}

जैसा की आप ऊपर दिए गए code में देख सकते है destructuring declaration के साथ map को traverse किया जा रहा है और keys और values को individual values के रूप में use किया जा रहा है। 

Destructuring Declarations and Lambdas

Lambda (function के) parameters के लिए भी आप destructuring declarations का syntax उपयोग कर सकते है। यदि एक lambda में pair type के parameter है तो आप आसानी से destructuring declarations भी define कर सकते है और normal parameters भी define कर सकते है। 

{(a, b) –> …} // Destructuring declarations pair as lambda parameter

Previous: Kotlin Null Safety