Kotlin in Hindi : Type Checking and Casting

  • Introduction to kotlin type checking in Hindi
  • Kotlin smart casts in Hindi 
  • Kotlin explicit casting in Hindi

Introduction to Kotlin Type Checking

कई popular programming languages type checking और casting के लिए functionalities provide करती है। Kotlin में भी यह feature उपलब्ध है।

Type of Object 

कई बार जब आप mixed types के साथ कार्य करते है तो run time पर यह जानना आवश्यक हो जाता है की एक object किस type (class) का है।

उदाहरण के लिए आप objectA का reference objectB को runtime पर assign करवा रहे है। ऐसे में पहले आपको यह check करना आवश्यक है की दोनों same type (class) के object है या नहीं। क्योंकि यदि दोनों object same type के नहीं है तो ऐसा नहीं किया जा सकता है।

is Operator 

इस कार्य के लिए kotlin आपको is operator provide करती है। इस operator के द्वारा आप compile time पर यह पता कर सकते है की एक object किस type का है।

val Message: String = “Hello reader!”

if(msg is String)
{
   print(“Message is a string object”)
}

ऊपर दिए गए code में Message एक string object है। If statement में is operator के माध्यम से यह confirm किया गया है।

Negated Form (!is)

Kotlin में is operator की एक negation form भी है। यह form negated सन्दर्भ में उपयोग की जाती है। 

val Message: String = “Hello reader!”

if(Message !is String)
{
   print(“Message is not string.”)
}

Kotlin Type Casting

जब आप किसी एक type के variable की value को किसी दूसरे type के variable को assign करना चाहते है तो ऐसा आप directly नहीं कर सकते है। इसके लिए पहले आपको उस value को cast करने की आवश्यकता होती है ताकि वह दूसरे type में store की जा सके।

Java में compatible types को आपस में cast करने के लिए cast () operator का प्रयोग किया जाता है। उदाहरण के लिए आप एक integer variable की value को string variable को assign करना चाहते है तो इसके लिए पहले आपको integer value को string में cast करना होगा।

int num = 5;
String value = (String) num;

ऊपर दिए गए code में num variable की value को string में cast करके string variable को assign किया गया है।

Kotlin Smart Casting 

Java के तरीके से हटकर kotlin आपको एक special type की casting ability provide करती है। जिसे kotlin में smart casting कहा जाता है।

Kotlin में is operator का type check करने के अलावा एक काम और भी है। जब आप किसी type को is operator द्वारा check करते है तो वह automatically उस type में cast हो जाता है।

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

fun main(args: Array<String>)
{

val obj: Any = “Best Hindi Tutorials”;

if(obj is String)
{
    print(obj.length)
}

}

ऊपर दिए गए code में Any type के object को is operator द्वारा automatically string में cast किया गया है। यदि object cast नहीं किया गया होता तो उसके साथ length property का प्रयोग किया जाना संभव नहीं था।

Smart Casting Rules

Kotlin में smart casting सभी types के साथ possible नहीं है। यह केवल compiler द्वारा automatically तब ही perform की जाती है जब compiler को लगता है की casting और उसका उपयोग संभव है। निचे कुछ elements बताये जा रहे जिनके साथ smart casting संभव है 

  • val local variables – Val local variables के साथ smart casting हमेशा संभव है। लेकिन local delegated properties के साथ ऐसा नहीं किया जा सकता है। 
  • val properties – यदि property private या internal है और जँहा property को declare किया गया है वँही पर check perform किया गया है तो smart casting संभव है। Open properties या ऐसी properties जिनका custom getter declare किया गया है उनके साथ smart casting सम्भव नहीं है। 
  • var local variables – यदि variable check करने और use करने के बीच modify नहीं किया गया है, यदि उसे किसी lambda द्वारा नहीं catch किया गया है जो उसे modify नहीं करता है और यदि variable local delegated property नहीं है। 
  • var properties – Var properties के साथ smart casting possible नहीं है। 

Kotlin Explicit Casting

Kotlin में is operator द्वारा की गयी casting automatic होती है। लेकिन जैसा की आपको पता है इस प्रकार की casting हर संदर्भ में संभव नहीं होती है।

ऐसे में casting explicitly (manually) cast operator द्वारा perform की जाती है। Cast operator का concept कई programming languages में है लेकिन kotlin में cast operator अलग है।

Cast Operator as (Unsafe)

Kotlin आपको as cast operator provide करती है जो casting perform करने के लिए use किया जाता है। Compatible types के बीच casting आसानी से हो जाती है। यदि  types के बीच casting संभव नहीं होती है तो ClassCastException generate होती है। यही कारण है की इस operator को unsafe cast operator भी कहा जाता है।

val obj: Any = 555
val myValue: String = obj as String // Generates exception

ऊपर दिए गए उदाहरण में integer object को as operator द्वारा string में cast करने का प्रयास किया गया है।  यह code exception generate करता है क्योंकि integer को string में नहीं cast किया जा सकता है।

Cast Operator as? (Safe)

Kotlin में as operator की एक form as? है जो की as से safe casting perform करने के लिए प्रयोग की जाती है। यह operator compatible types के साथ आसानी से casting perform कर देता है और यदि दो types के बीच casting संभव नहीं होती है तो exception generate करने की बजाय यह operator null return करता है।

val obj: Any = 555
val myValue: String = obj as? String

print(myValue)   // It will print null

Previous: Kotlin Exceptions
Next: Kotlin Null Safety

Kotlin Tutorial in Hindi

Kotlin Tutorial in Hindi

Kotlin Google द्वारा android application development के लिए create की गयी है। Google ने kotlin को android development के लिए official programming language घोषित किया है।

Kotlin java को इस क्षेत्र में replace कर रही है। क्योंकि kotlin में बहुत से ऐसे advanced features को introduce किया गया है जो java में उपलब्ध नहीं है।

Kotlin द्वारा आप कोई भी कार्य java से जल्दी और कम code में perform कर सकते है। Java में कुछ ऐसे drawbacks है जिनको change नहीं किया जा सकता है और जो app development को सिमित बनाते है। Kotlin आपको वे सब features provide करती है जो android app development के लिए अनिवार्य है।

यदि आपने Java पढ़ी हुई है तो आसानी से kotlin सीख सकते है। Kotlin एक functional language भी है और object oriented भी है। Kotlin java के साथ interoperable है।

हालाँकि kotlin और java के code को एक साथ use किया जा सकता है। लेकिन क्योंकि kotlin को android app development के लिए official language घोषित कर दिया गया है। इसलिए अब kotlin को android apps develop करने के लिए अधिक प्रयोग किया जाने लगा है।

यदि आप एक android developer बनना चाहते है तो आपको kotlin programming language को निश्चित रूप से सिख लेना चाहिए। क्योंकि android app development का future kotlin के साथ ही है। Kotlin सिख कर आप android app developer बनने की तरफ अपना पहला कदम बढ़ा सकते है।

इसी बात को ध्यान में रखते हुए Best Hindi Tutorials के readers के लिए Kotlin की सरल और आसानी से समझने योग्य tutorials provide की गयी है। ये सभी tutorials Hindi language में उपलब्ध है। Kotlin के सभी topics को सरल उदाहरणों द्वारा detail से समझाया गया है।

Kotlin tutorial series की सभी tutorials की list निचे provide की जा रही है। आप इनके द्वारा kotlin सीखना शुरू कर सकते है।

Table of Contents

  1. Kotlin Introduction : इस tutorial में आप kotlin के बारे में सामान्य जानकारी प्राप्त करेंगे। Kotlin की history और features के बारे में इस tutorial में detail से बताया गया है। 
  2. Kotlin Basic Types : सभी popular languages की तरह kotlin भी data types provide करती है जो की classes के रूप में implement किये गए है। इस tutorial में आप kotlin में available Number, Boolean, Array, Character आदि types के बारे में बताया गया है। 
  3. Kotlin Variables : Variables का प्रयोग data को store करने के लिए किया जाता है ताकि उस data के साथ operations perform किये जा सके। इस tutorial में kotlin में var और val keywords द्वारा variables create करना और उनकी values print करना समझाया गया है।
  4. Kotlin Classes : Class object oriented programming में सबसे महत्वपूर्ण element होती है। इस tutorial में आप kotlin में classes, primary और secondary constructors और objects के बारे में जानेंगे।
  5. Kotlin Properties : Properties classes में define की जाती है और private field पर define की जाती है। इस tutorial में kotlin में mutable और immutable properties create करना, late initialized properties create करना और properties को override करना बताया गया है।
  6. Kotlin Class Inheritance : Inheritance के द्वारा एक class दूसरी class के public और protected members को access कर पाती है। इस tutorial में kotlin में inheritance को implement करना और methods और properties को override करना बताया गया है।
  7. Kotlin Visibility Modifiers : Visibility modifiers के माध्यम से program में abstraction implement किया जाता है। इस tutorial में visibility modifiers का परिचय और विभिन्न elements के साथ उनके प्रयोग को विस्तार से बताया गया है।
  8. Kotlin Delegation : Delegation के द्वारा एक class अपने कार्य किसी दूसरी class को delegate कर सकती है। इस tutorial में kotlin में delegation को implement करना और by keyword का प्रयोग करना बताया गया है।
  9. Kotlin Delegated Properties : Delegated properties के माध्यम से आप कई महत्वपूर्ण functionalities achieve कर सकते है। इस tutorial में delegated properties create करना और उन्हें उपयोग करना बताया गया है।
  10. Kotlin Extensions : Extensions के माध्यम से एक class के साथ additional functionalities attach की जाती है। इस tutorial में extension functions और extension properties को create और use करना बताया जायेगा।
  11. Kotlin Interfaces : Interfaces के प्रयोग से classes एक template को implement कर सकती है। इस tutorial में kotlin में interfaces create करना और उन्हें उपयोग करना बताया गया है।
  12. Kotlin Sealed Classes : Sealed classes restricted type hierarchies को represent करने के लिए use की जाती है। इस tutorial में आप sealed classes define करना और use करना सीखेंगे।
  13. Kotlin Nested & Inner Classes : एक class के अंदर आप दूसरी class भी create कर सकते है। ऐसी classes nested और inner दो प्रकार की होती है। इस tutorial में आप kotlin में nested और inner classes create करना सीखेंगे। इसके अलावा आप anonymous inner class भी create करना सीखेंगे।
  14. Kotlin Enum Classes : Kotlin में enum type को classes के रूप में implement किया जाता है। इस tutorial में enum classes create करना और उनके साथ कार्य करना सीखेंगे।
  15. Kotlin Inline Classes : Kotlin में inline classes का concept provide किया गया है जिन्हें wrap करने पर भी extra overhead नहीं बढ़ता है।
  16. Kotlin Generics : Generic mechanism से आप ऐसा code लिख सकते है जो कई types के साथ execute किया जा सकता है। इस tutorial में kotlin में generic code लिखना बताया गया है।
  17. Kotlin Control Flow : Control flow statements का प्रयोग program के flow को control करने के लिए किया जाता है। इस tutorial में आप kotlin में available control flow statements को बताया गया है।
  18. Kotlin Packages : Packages का प्रयोग multiple kotlin files को organize करने के लिए किया जाता है। इस tutorial में kotlin में packages create करना और default kotlin package के बारे में बताया गया है।
  19. Kotlin Collections : Collections के द्वारा data को अलग अलग प्रकार से store और process किया जा सकता है। इस tutorial में आप kotlin में available different collections के बारे में जानेंगे।
  20. Kotlin Ranges :  Kotlin में आप values की ranges create करके उन पर operations perform करने की ability provide करती है। इस tutorial में ranges के साथ कार्य करना और primitive type ranges के बारे में बताया गया है।
  21. Kotlin Annotations : Annotation के माध्यम से code के साथ metadata attach किया जाता है। इस tutorial में kotlin meta annotations और annotations create करना बताया गया है।
  22. Kotlin Equality : सभी programming languages में equality अलग अलग प्रकार से compare की जाती है। इस tutorial में आप kotlin में available structural और referential equality provide की जाती है।
  23. Kotlin This Expression : This expression का प्रयोग current object को refer करने के लिए किया जाता है। इस tutorial में आप जानेंगे की kotlin में this keyword का प्रयोग extension function के receiver type को denote करने के लिए किया जाता है।
  24. Kotlin Exceptions :  सभी programming languages की तरह kotlin भी आपको exception handling mechanism provide करती है। इस tutorial में kotlin में आप exceptions को handle करना बताया गया है।
  25. Kotlin Type Checking & Casting : Kotlin आपको type checking के लिए कुछ operators provide करती है जो smart casting perform करते है। इस tutorial में आप kotlin में type checking और casting करना सीखेंगे। 
  26. Kotlin Null Safety : Kotlin के सबसे महत्वपूर्ण features में से एक null safety है। इस tutorial में आप kotlin में available nullable और non-null references के बारे में जानेंगे और उनके साथ null safety achieve करना सीखेंगे। 
  27. Kotlin Destructuring Declarations : Kotlin आपको एक object को destructure करके उसके variables को independently उपयोग करने की ability provide करती है। इस tutorial में आप objects के destructuring declarations define करना सीखेंगे।  

आशा है की Best Hindi Tutorials द्वारा किया गया यह प्रयास आपको पसंद आएगा। 

Kotlin in Hindi : Exceptions

  • Introduction to kotlin exceptions in Hindi
  • Kotlin exceptions classes in Hindi
  • Kotlin checked exceptions in Hindi

Introduction to Kotlin Exceptions

किसी भी programmer के लिए exceptions को handle करना बहुत जरुरी होता है। इससे आपकी application crash होने से बच जाती है और bad user experience भी नहीं create होता है। 

Java की तरह kotlin भी आपको exception handling mechanism provide करती है। Java और kotlin में exception handling लगभग एक समान है आपको अलग से कुछ सिखने की आश्यकता नहीं है। 

Run Time Error

Exceptions runtime errors होती है। Runtime errors वे errors होती है जो program execution के दौरान आती है और execution को रोक देती है। इसे program crash होना भी कहा जाता है।

Exceptions unexpected होती है और इन्हें रोका नहीं जा सकता है सिर्फ इन्हें handle किया जा सकता है। यानी की program को crash होने से रोका जा सकता है।

उदाहरण के लिए यदि program को execute होने के लिए computer में पर्याप्त memory उपलब्ध नहीं है तो program को run करते समय exception generate होगी और program का execution रुक जायेगा। 

Exceptions syntax errors (compile time errors) से अलग होती है। Syntax errors program को run करने से पूर्व compile time पर आती है और उन्हें program syntax में सुधार करके ठीक किया जा सकता है।

उदाहरण के लिए आप एक bracket add करना भूल जाते है तो compiler आपको element missing जैसी errors show करता है और जैसे ही आप उस syntax को सुधार लेते है तो वह error भी चली जाती है।

Ability to Handle Exceptions

Kotlin आपको exceptions को handle करने की ability provide करती है। जिसे exception handling कहा जाता है। इसके लिए kotlin आपको कई keywords provide करती है।

Kotlin में available keywords का प्रयोग करके आप exception handling mechanism को implement कर सकते है।

Application Crashes If Not

यदि आप अपनी application में exceptions को handle नहीं करते है तो आपकी application एक robust  application नहीं होती है। ऐसी applications कभी भी crash हो सकती है। 

यदि industry standard की बात की जाय तो exception handling अनिवार्य और बहुत important task है।  

Exception Classes 

Java की ही तरह kotlin में भी exceptions को classes के द्वारा represent किया गया है। उदाहरण के लिए ArithmeticException class arithmetic exceptions को represent करती है।

Kotlin में available Throwable class सभी exception classes द्वारा inherit की गयी है। Throwable class को Error और Exception दो classes inherit करती है। इनमें Exception class को सभी exceptions inherit करती है।

Throwable
 |– Error
 |– Exception
      |– IllegalCallableAccessException
      |– IllegalPropertyDelegateException
      |– NoSuchPropertyException
      |– RunTimeException
           |– ArithmeticException
           |– ClassCastException
           |– ConcurrentModificationException
           |– FreezingException
           |– IllegalArgumentException
           |– IllegalStateException
           |– IncorrectDereferenceException
           |– IndexOutOfBoundsException
           |– InvalidMutabilityException
           |– NoSuchElementException
           |– NoWhenBranchMatchedException
           |– NullPointerException
           |– UninitializedPropertyAccessException
           |– UnsupportedAccessException

Checked & Unchecked Exception

Mostly exceptions checked और unchecked दो प्रकार की होती है। इनमें checked exception ऐसी exception होती है जिसे compile time पर check किया जाता है।

Checked exceptions के बारे में पहले से ही पता होता है। इन्हें throw keyword के प्रयोग से generate किया जाता है। Unchecked exceptions compile time पर known नहीं होती है। ये unexpected exceptions होती है।

एक बात आपको हमेशा ध्यान रखनी चाहिए की kotlin में checked exceptions allow नहीं है। Java में इससे होने वाली समस्याँओ को ध्यान में रखते हुए kotlin में checked exception को allow नहीं किया गया है।

Handling Exceptions in Kotlin 

Kotlin में exceptions try, catch और finally keywords द्वारा handle की जाती है। ये सभी keywords अलग अलग code blocks को represent करते है। 

try
{
  // Code that may generate an exception.
}
catch(e: ExceptionName)
{
  // Handle exception here
}
finally
{
  // Optional code to perform.
}

Try block में वह code लिखा जाता है जिससे संभवतः exception generate हो सकती है। Try block के बाद catch block लिखा जाता है। Catch block में ही generate हुई exception को handle किया जाता है।

Catch block में एक argument भी pass किया जाता है। जिसे exception argument कहा जाता है। यह उसी type का होता है जो exception आप catch block में handle करना चाहते है।

उदाहरण के लिए आप try block में arithmetic exception handle करना चाहते है तो इसके लिए try block इस प्रकार define करेंगे।

catch(e: ArithmeticException)

एक try block के बाद आप multiple catch blocks define कर सकते है। आप अलग अलग type की exceptions को इन catch blocks में handle कर सकते है।

Catch block में pass किये जाने वाले argument से आप उस exception से सम्बंधित जानकारी print कर सकते है। इसके लिए Message और StackTrace जैसी properties आप use कर सकते है जो सभी exception types के साथ available है।

catch(e: ArithmeticException)
{
   print(e.Message)
}

Finally block में वह code लिखा जाता है जो चाहे exception generate हो या ना हो हर situation में execute होता है। इस block में आप connection terminate करना और resources free करना जैसे कार्य कर सकते है। Try block के बाद कम से कम एक catch या finally block होना अनिवार्य होता है। 

Try is an Expression 

Kotlin में आप try और catch block को expression के रूप में भी use कर सकते है। इससे आप variable assignment को भी exception के लिए guard कर सकते है। यह feature exceptions को handle करने की आपकी ability को extend करता है। 

val a: Int? = try{parseInt(input)}catch(e:NumberFormatException){null} 

ऊपर दिए उदाहरण में यदि input को int में parse नहीं किया जा सकेगा तो a variable को null value assign कर दी जायेगी।

Previous: Kotlin This Expression and Type Aliases
Next: Kotlin Type Checking and Casting

Kotlin in Hindi : This Expression & Type Aliases

  • Introduction to kotlin this expression in Hindi
  • Usage & example of kotlin this expression in Hindi
  • Introduction to kotlin type aliases in Hindi

Introduction to Kotlin This Expression

Java में जब भी आपको class के अंदर से ही उस class के object (current object) को refer करना होता है तो आप this keyword का प्रयोग करते है। Java में this का यही प्रमुख उपयोग भी है।

Kotlin में this को expression के रूप में introduce किया गया है। Kotlin में this का प्रयोग current receiver को denote करने के लिए किया जाता है।

Kotlin में this expression के दो प्रमुख उपयोग है।

In Member Class

एक member class में this expression को उस class के current object को refer करने के लिए प्रयोग किया जाता है। This expression का यह use java में available this keyword के समान है। 

class myClass(val n: String)
{
    val Name: String
   
     init
     {
          this.Name = n
     }
   
     fun display()
     {
         print(this.Name)
     }
}

fun main(args: Array<String>)
{
    var obj = myClass(“Best Hindi Tutorials”)
    obj.display()
}

In Extension Function

एक extension function में this receiver parameter को denote करने का कार्य करता है। Receiver parameter वह parameter होता है जो dot operator के left में define किया जाता है।

class myClass(val n: String)
{
   val Name: String
 
    init
    {
            this.Name = n
    }

     fun display()
     {
          print(this.Name)
      }
}

fun myClass.nickName()
{
    print(this.Name)
}

fun main(args: Array<String>)
{
   val obj = myClass(“Best Hindi Tutorials”)
    obj.display()
    obj.nickName()
}

Qualified This 

यदि आप inner classes का प्रयोग कर रहे है तो this expression से confusion पैदा हो जाता है। क्योंकि यह पता नहीं चल पाता है की किस class के current object को वह this refer कर रहा है।

ऐसी situation में this को अलग अलग scopes में define करने के लिए label qualifiers use किये जाते है। Label qualifiers को @ symbol के साथ define किया जाता है। Labels बताते है की this किस class के current object को refer करता है।

class outerClass
{
   val Name: String = “Outer Class”

        inner class innerClass
       {
           val Name: String = “Inner Class”

           fun display()
           {
               print(this@outerClass.Name)
               print(this@innerClass.Name)
           }
       }
}

fun main(args: Array<String>)
{
     outerClass().innerClass().display()
}

Introduction to Kotlin Type Aliases

Kotlin आपको longer type names के shorter alternative names create करने की ability provide करती है। इन्हें type aliases कहा जाता है।

यह उन situations में उपयोगी होता है जब type का नाम बहुत बड़ा हो और आपको बार बार उसे लिखने में परेशानी हो रही हो। ऐसे में आप उस नाम का एक shorter alternative create करके उसे आसानी से उपयोग कर सकते है।

उदाहरण के लिए inner class को refer करने के लिए बहुत बड़ा syntax हो जाता है। Types aliases की मदद से आप उसे छोटा स्वरूप दे सकते है और सुविधापूर्वक उपयोग कर सकते है।

Type aliases create करने से कोई नया type नहीं define होता है और ना ही उसकी कार्य प्रक्रिया में किसी प्रकार अंतर आता है। सिर्फ एक name define होता है जिसे उस type name की तरह use किया जा सकता है।

Type aliases create करना आपके लिए कई प्रकार से उपयोगी साबित हो सकता है। 

Shorten Long Generic Types 

जैसा की आप जानते है generic types की definition काफी लम्बी होती है और इस वजह से उसे use करना थोड़ा कठिन भी लगता है। ऐसे में आप generic types के aliases create करके उन्हें use कर सकते है। 

Function Types Aliases 

Generic types की ही तरह function types का declaration lengthy और अटपटा होता है। Kotlin में आप function types के भी aliases create कर सकते है।

Inner and Nested Class Aliases

जैसा की आपको पता है inner और nested class के members को resolve करने के लिए आपको बहुत बड़ा syntax use करना पड़ता है। ऐसे में aliases create करके आपके उसे short बना सकते है।

Previous: Kotlin Equality
Next: Kotlin Exceptions

Kotlin in Hindi : Equality

  • Introduction to kotlin equality in Hindi
  • Kotlin structural equality in Hindi
  • Kotlin referential equality in Hindi

Introduction to Kotlin Equality

कई बार आपको दो variables, दो objects या दो references को compare करने की आवश्यकता होती है। ज्यादातर programming languages में इसके लिए equality operator (==) का प्रयोग किया जाता है।

Equality operator (==) यह check करता है की दो variables, objects या references एक समान है या नहीं। यदि ऐसा है तो true return किया जाता है नहीं तो false return किया जाता है।

Equality operator का एक और variance होता है जिसे not equal (!=) कहा जाता है जो यह check करता है की दो variables, objects या references एक दूसरे के बराबर नहीं है। यदि बराबर नहीं होते है तो true return किया जाता है और यदि बराबर होते है तो false return किया जाता है।

Equality operator का प्रयोग आपने control statements में निश्चित रूप से किया होगा। जिसमें किसी condition को test करके उसके अनुसार statements execute किये जाते है।

आप कोई भी programming language use करें equality operator को variables, objects और references के बीच equality check करने के लिए use किया जाता है। लेकिन kotlin में यह थोड़ा अलग है।

Kotlin में दो प्रकार की equality पायी जाती है। Kotlin में variables को use करने के लिए अलग equality operator का प्रयोग किया जाता है और objects और उनके references को compare करने के लिए अलग equality operator use किया जाता है। इन्हें kotlin में structural और referential equality कहा जाता है।

Kotlin Structural Equality (==)

Kotlin में दो variables को compare करने के लिए double assignment (==) operator use किया जाता है। इसे kotlin में structural equality operator कहा जाता है। 

जँहा दूसरी programming languages जैसे की Java आदि में इस operator द्वारा variables और references को भी compare किया जाता है वँही kotlin में इसे सिर्फ variables और data को compare करने के लिए किया जाता है। 

Data से यँहा मतलब raw data से है जो की किसी variable में store नहीं किया गया है। उदाहरण के लिए आप 3 और 5 integer numbers को compare करें तो वह data comparison कहलायेगा क्योंकि इन्हें variables में store नहीं किया गया है। 

इस operator का दूसरा variance (!=) check करता है की दो variables समान नहीं है।

Example

fun main(args: Array<String>)
{
    val a: Int = 5
    val b: Int = 5

    // Checking structural equality
    if(a==b)
    {
         print(“Both variables are equal”)
    }
}

.equals()

Kotlin में structural equality को equals() function द्वारा भी compare किया जा सकता है। यह function ज्यादातर objects को compare करने के लिए use किया जाता है। 

इस function को एक object के साथ call किया जाता है और दूसरा object इसमें argument के रूप में pass किया जाता है। यह function kotlin में Any class द्वारा implement किया गया है। 

Kotlin में == और equals method को use करने में difference यह है की equals method float और double types के comparison के लिए IEEE 754 Standard for Floating-Point Arithmetic को follow नहीं करता है। 

Null Equality 

यदि आप structural equality operator (==) द्वारा NULL value को compare करते है। ऐसी situation जिसमे दोनों में से कोई भी variable null hold करता है तो ऐसे में उसे automatically referential equality में change कर दिया जाता है और उन दो variables के references को check किया जाता है। 

यदि आप किसी variable को null से compare करने का प्रयास करते है तो भी ऐसा ही होता है। 

Custom Equal Check Implementation

Kotlin में आप अपना स्वयं का भी check mechanism implement कर सकते है। इसके लिए आप Any class में available equals() function को override कर सकते है। इस function को override करने से == या != operators पर कोई असर नहीं होता है। 

Kotlin में equals() function इसीलिए ही provide किया गया है ताकि इसे override किया जा सके। 

Kotlin Referential Equality (===)

Kotlin में दो variables या objects के references को compare करने के लिए triple assignment operator use किया जाता है। इसे kotlin में referential equality operator कहा जाता है। 

Kotlin में यह operator references की समानता को compare करता है। यदि दो references समान होते है तो true return किया जाता है नहीं तो false return किया जाता है। 

इस operator का दूसरा variance (!==) होता है जो की दो references की असमानता को compare करता है। यदि दो references असमान होते है तो true return किया जाता है नहीं तो false return किया जाता है।

Example

class myClass(val n: Int)
{
    val num: Int
 
    int
    {
         num = n
    }
}

fun main(args: Array(String)
{
    var obj1 = myClass(5)
    var obj2 = myClass(1)

    obj2 = obj1

    if(obj1===obj2) //Checking referential equality
    {
          print(Both are equal)
    }
}

Previous: Kotlin Annotations
Next: Kotlin This Expression and Type Aliases

Kotlin in Hindi : Annotations

  • Introduction to kotlin annotations in Hindi
  • Kotlin meta annotations in Hindi
  • Example of kotlin annotations in Hindi

Introduction to Kotlin Annotations

Kotlin में annotation code के metadata attach करने का एक माध्यम है। Metadata code से संबधित जानकारी होती है जो अपरिचित programmer द्वारा आसानी से समझी जा सकती है और code के उपयोग में सहायक होती है।

annotation Modifier

Annotation define करने के लिए annotation modifier का प्रयोग किया जाता है। उदाहरण के लिए किसी class के लिए annotation इस प्रकार define किया जा सकता है। 

annotation class annotClass

यँहा पर annotClass एक annotation class है।

Meta Annotations

Annotation के अतिरिक्त attributes define करने के लिए annotation class को भी meta annotations द्वारा annotate किया जाता है। Meta annotations को annotation class के declaration से पूर्व define किया जाता है।

  • @Target –  यह  meta annotation उन सम्भावित elements को बताता है जो annotation के साथ annotate किये जा सकते है। 
  • @Retention – यह meta annotation बताता है की, annotation को compile की गयी class file में store किया गया है या नहीं और यह reflection के द्वारा runtime पर visible होगी या नहीं। By default ये दोनों ही true होती है। 
  • @Repetable – यह meta annotation एक element के साथ बार बार वही annotation उपयोग करने की अनुमति देता है। 
  • @MustBeDocumented – यह meta annotation बताता है की annotation public API का हिस्सा है और generate किये हुए API documentation में दिखाए गए class और method में include किया जाना चाहिए। 

इन meta annotations के साथ आप ऊपर दी गयी annotClass को दुबारा इस प्रकार define कर सकते है।

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class annotClass

Using Annotations

Annotation class के साथ normal class और function को इस प्रकार define किया जा सकता है। 

@annotClass class myClass
{
    @annotClass fun myFunction(@annotClass num: Int): Int
    {
         return (@annotClass 1)
    }
}

जैसा की आप देख सकते है यह एक आसानी से समझ आने योग्य declaration है। Class और function को annotation class से prefix किया गया है और parameters और return value को भी annotation class के साथ define किया गया है।

जिन elements को annotation से define किया जाता है वे उसी annotation के आधार पर compiler द्वारा treat किये जाते है। 

Annotating Primary Constructor

Primary constructor को annotate करने के लिए constructor declaration में constructor keyword को add करना होता है। इस keyword के पूर्व ही annotation को add किया जाता है। 

class myClass @Inject constructor(parameters)
{
 
}
ऊपर दिए गए code में constructor keyword से पूर्व @Inject annotation का प्रयोग करके primary constructor को annotate किया गया है।

Annotating Property Accessors

Annotations के द्वारा आप property accessors को भी annotate कर सकते है। इसके लिए आप simply accessors से पूर्व annotation define करते है।

class myClass
{
   var temp: Int = x
    @Inject set
     …
}

Annotating Lambdas

Kotlin में lambdas को भी annotate किया जा सकता है। Annotation को method body से पूर्व invoke() method पर apply किया जाता है।

annotation class annotLamnda

val x = @annotLambda {
 //lambda body
}

Annotation Constructors

Annotations के constructors भी हो सकते है जो parameters accept करते है। उदाहरण के लिए निचे define की गयी annotation class conAnnot को देखिये।

annotation class conAnnot(val name: String)

ऊपर define की गयी conAnnot annotation class का constructor define किया गया है जो argument के रूप में एक string नाम accept करता है।

जब इस annotation class को use किया जायेगा तो annotation define करने के साथ argument भी pass किया जायेगा। जैसा की निचे दिखाया गया है।

@conAnnot(“Best Hindi Tutorials”) class myClass
{
 
}

Allowed Parameter Types for Annotation Constructors

Annotation constructors में निचे दिए जा रहे type के parameters ही allowed है।

  • Primitive types, जो की java में भी primitive types है। 
  • Strings 
  • Class 
  • Enums 
  • Annotations 
  • ऊपर दिए गए types का array 
Nullable types को annotation constructor में parameter के रूप में नहीं use किया जा सकता है। यदि आप annotation को parameter के रूप में pass कर रहे तो इसके लिए उसे @symbol से prefix करने की आवश्यकता नहीं है।

यदि आप एक class को parameter के रूप में pass करना चाहते है तो इसके लिए आपको kotlin KClass use कर सकते है।

Use-site Targets

जब kotlin code byte code में generate किया जाता है तो kotlin के एक element से कई java element generate हो जाते है। ऐसे में annotate करने के लिए बहुत सी locations available हो जाती है। Annotation के पूर्ण रूप से कार्य करने के लिए उन सभी elements को भी annotate किया जाना आवश्यक होता है। 

लेकिन ऐसा code के byte code में generate होने के बाद नहीं किया जा सकता है। आप पहले ही यह specify कर सकते है की एक annotate किया जा चुका element byte code में किस प्रकार generate होगा। 

इस प्रकार कई java targets को annotate किया जा सकता है। 

  • file 
  • property 
  • field 
  • get 
  • set 
  • receiver 
  • param 
  • set 
  • param 
class Example(@field:Ann val foo,@get:Ann val bar, @param:Ann val quux)

ऊपर दिए गए code में java के field, getter और constructor parameter को annotate करने के instructions compiler को दिए गए है। 

Java Annotations

Java annotations kotlin से पूरी तरह compatible है। Java annotations को kotlin code में use किया जा सकता है। निचे दिए जा रहे code snippet में java annotations को kotlin में use करना बताया जा रहा है।

// Java Annotation
public @interface Ann
{
    int intValue();
    String stringValue();
}
// Kotlin Annotation
@Ann(intValue = 1, stringValue = “abc”) class C 

Previous: Kotlin Ranges
Next: Kotlin Equality

Kotlin in Hindi : Ranges

  • Introduction to kotlin ranges in Hindi
  • Kotlin primitive type ranges in Hindi
  • Kotlin ClosedRange<T> interface in Hindi

Introduction to Kotlin Ranges

Kotlin आपको कुछ निश्चित values की range पर भी operations perform करने की ability provide करती है। यह feature उन situations में available है जब आपके पास कोई एक option available ना होकर options की range available हो।

एक range values का क्रम होता है। एक range की lower और higher values होती है जो उस range के start और end को दर्शाती है।

उदाहरण के लिए 1 2 3 4 5 6 7 8 9 10 एक range है। इसमें 1 lower value है जो की range के start को दर्शाती है और 10 higher value है जो range के end को दर्शाती है।

हालाँकि इस range में 10 अलग अलग values है। लेकिन kotlin आपको एक साथ इन 10 values की range में operations perform करने की ability provide करती है। कोई भी value जो range में नहीं है उस पर वह operation apply नहीं होगा।

Comparable Type Ranges

एक range को किसी भी comparable type के लिए define किया जा सकता है। Comparable type से यँहा मतलब है की ऐसी classes जो Comparable interface को implement करती है।

Comparable interface को implement करने वाली classes के instances के बीच एक total ordering defined होती है। इससे इन्हें ranges के रूप में use किया जा सकता है।

Comparable interface में ranges के लिए विभिन्न functions provide किये गए है।

  • rangeTo() – यह function start element से end element तक की range define करने के लिए use किया जाता है। 
  • downTo() – यह function reverse iteration के लिए प्रयोग किया जाता है। 
  • step() – यह function step को define करता है जो की range में दो elements की दुरी होती है। 

इन सभी functions की operator forms भी available है जो सिर्फ primitive type ranges के साथ ही use कि जाती है। 

Primitive Type Ranges

Class types के अलावा आप kotlin में available primitive types जैसे की integer, long और char आदि की भी ranges define कर सकते है। Primitive types की range define करना बहुत आसान है।

Comparable types के लिए use किये जाने वाले functions primitive types के साथ operators के रूप में use किये जाते है।

Integral type ranges को भी अलग से types के द्वारा represent किया गया है।

  • IntRange – Integer ranges के लिए। 
  • LongRange – Long numbers ranges के लिए। 
  • CharRange – Character ranges के लिए (a..z या A..Z)

Can Be Iterated Over

Primitive type ranges के बारे में जो सबसे महत्वपूर्ण बात है वह यह है की primitive type ranges को iterate किया जा सकता है। Primitive type ranges को for loop में use कर सकते है। ऐसा comparable types के साथ किया जाना सम्भव नहीं है।

Compiler Automatically Converts to Normal for Loop

जब आप ranges को for loop में use करते है तो compiler उसे identify करके automatically normal for loop में convert कर कर देता है।

Defined Using Double Dot Operator (..)

एक primitive type range को define करने के लिए kotlin में double dot operator का प्रयोग किया जाता है। इस operator को start और end value के बीच define किया जाता है। यह operator rangeTo function के equivalent है। 
उदाहरण के लिए आप एक 1 से 10 की range create करना चाहते है तो ऐसा आप इस प्रकार कर सकते है।

val x = 1..10

Used With in and !in

Ranges के साथ कार्य करने के लिए in और !in operators का प्रयोग किया जाता है। ये operators range में किसी element की membership को दर्शाते है।

इनमें in operator ये confirm किया जाता है की कोई element range में है। जब कोई element range में होता है तो true return किया जाता है नहीं तो false return किया जाता है।

और !in operator द्वारा यह confirm किया जाता है की कोई element range में नहीं है। जब कोई element range में नहीं होता है तो true return किया जाता है और जब element range में available होता है तो false return किया जाता है।

उदाहरण के लिए किसी दूसरी programming language में 1 से 10 तक loop चलाने के लिए आपको इस प्रकार code लिखना होगा।

for(i=1;i<=10;i++)
{
     print(i)
}

ऊपर दिए गए code में 1 से 10 तक की range में loop चलाया गया है और हर बार i को increase किया गया है। Condition के द्वारा हर iteration में यह check किया गया है की i available है या नहीं। Loop के अंदर i को print किया गया है।

ऊपर दिए गए code को ranges की मदद से आप kotlin में इस प्रकार define कर सकते है।

for(i in 1..10)
{
    print(i)
}

Step 

एक range में दो elements के बीच के difference को step द्वारा measure किया जाता है। Default step 1 ही होता है। उदाहरण के लिए ऊपर दिए गए उदाहरण में 1..10 तक की range में step 1 है। Range के हर element को one by one i से match किया गया है।

लेकिन आप अपनी आवश्यकतानुसार भी step को set कर सकते है। इसके लिए step() function का प्रयोग किया जाता है। इस function को range के बाद define किया जाता है। Function के नाम के बाद integer में step को define किया जाता है।

यदि आप 1 से 10 तक की range में सिर्फ even numbers को print करना चाहते है तो इसके लिए आपको step 2 set करना होगा।

for(i in 1..10 step 2)
{
   print(i)
}  

Reverse Iteration

किसी range को reverse में iterate करने के लिए downTo() function का प्रयोग किया जाता है। इस function को range के बाद define किया जाता है। इसके बाद वह element define किया जाता है जँहा तक आप iterate करना चाहते है। 

for(i in 1..10 downTo 1)
{
   print(i)
}

until()

आप एक ऐसी range भी define कर सकते है जिसमें end element को include ना किया जाये। इसके लिए until() function का प्रयोग किया जाता है।

for(i in 1 until 10)
{
   print(i)
}

ऊपर दिए गए उदाहरण में range 1 से 10 है लेकिन 10 को include नहीं किया गया है।

Previous: Kotlin Collections
Next: Kotlin Annotations

Kotlin in Hindi : Delegation

  • Introduction to kotlin delegation in Hindi
  • kotlin delegation by keyword in Hindi
  • Example of kotlin delegation in Hindi

Introduction to Kotlin Delegation

Delegation का concept कई modern programming languages जैसे की C# आदि में introduce किया गया है। लेकिन सभी language इसे अलग अलग तरह से implement करती है।

सभी languages delegation को एक feature की तरह implement नहीं करती है। ऐसी languages में delegation implement करने के लिए आपको एक delegation pattern design करना होता है जिसके लिए boilerplate code की आवश्यकता होती है।

जब आप किसी special feature को implement करने के लिए code template लिखते है तो वह boilerplate code कहलाता है। यह extra code होता है इससे program एक दुविधा भरे वन में तब्दील हो जाता है।

Kotlin Has Native Support For Delegation

दूसरी programming languages के विपरीत kotlin delegation के लिए native support provide करती है। Kotlin में delegation को language feature के रूप में implement किया गया है। 

Kotlin में delegation को implement करने के लिए by keyword को introduce किया गया है। इससे आप यह कह सकते है की kotlin में delegation एक language feature है। 

Passing Implementation to Another Object

Delegation एक mechanism होता है जिसके द्वारा एक class किसी code को खुद ना implement करके किसी दूसरी class को delegate कर देती है। इसके बाद जिस class को delegate किया जाता है वह class उस code का implementation provide करती है जो delegate करने वाली class द्वारा use किया जाता है।

उदाहरण के लिए आप class C को interface I implement करवाना चाहते है। Interface I में बहुत सारे methods available है। आप चाहते है की class C का code clean रहे।

Interface I
{
     //methods of interface
}

class C : I by D   //delegating implementation to class D
{
    //methods of class C
    //call methods of interface I from class D
}

class D: I
{
    //Implementation of methods of Interface I
    //also have methods from different interface
}

ऐसे में आप interface I के implementation को किसी दूसरी class D को delegate कर सकते है और उस class में उन सभी methods को implement कर सकते है। इसके बाद जरुरत पढ़ने पर class C में उन methods को normally call किया जा सकता है।

Alternative to Inheritance

Delegation को inheritance के विकल्प के रूप में देखा जाता है। जिस प्रकार inheritance से एक class दूसरी class के methods को use करती है। उसी प्रकार delegation में भी एक class दूसरी class के methods को use करती है। 

यँहा पर फर्क सिर्फ इतना है की वो methods class के ना हो कर एक interface के होते है और केवल उस class से वे ही methods call होते है जो interface में define किये गए है। उस class के बाकी methods को use नहीं किया जा सकता है।

Delegation inheritance से बेहतरीन होता है। क्योंकि delegation आपको run time flexibility provide करता है। एक interface को कई अलग अलग प्रकार से implement किया जा सकता है और program run होने के दौरान delegation को change किया जा सकता है और किसी दूसरे implementation को implement किया जा सकता है।

यह flexibility inheritance में available नहीं होती है। Inheritance में एक ही type का implementation होता है। यानि आप वही implementation use करते है जो base class में available होता है।

by Keyword

Kotlin delegation implement करने के लिए आपको by keyword provide करती है। यह keyword उस class को दर्शाता है जिसे आप delegate करना चाहते है।

interface dInterface
{
    //methods of dInterface
}

class delegatingClass : dInterface by delegatedClass   //delegating using by
{
   //methods of delegating class
}

class delegatedClass: dInterface
{
    //implementing dInterface Methods
}

सबसे पहले आप वह class define करते है जो delegate के रूप में कार्य करेगी। इसके बाद आप delegate करने वाली class के नाम के बाद colon लगाकर interface को implement करते है। Interface के नाम के बाद by keyword define किया जाता है। इसके बाद उस class का नाम define किया जाता है जो delegate के रूप में कार्य कर रही है।

Example of Kotlin Delegation

interface dInterface
{
    fun interfaceMessage()
}

class delegatingClass:dInterface by delegatedClass
{
    fun classMessage()
    {
       print(“Hello”)
    }
}

class delegatedClass:dInterface
{
    fun interfaceMessage()
    {
        print(“Hi”)
    }
}

fun main(args: Array<String>)
{
    val obj = delegatingClass()
   
    obj.interfaceMessage()
    obj.classMessage()
}

Kotlin in Hindi : Collections

  • Introduction to kotlin collections in Hindi
  • Different kotlin collections in Hindi

Introduction to Kotlin Collections

Collections का concept ज्यादातर सभी modern programming languages में introduce किया गया है। Collections आपको data को एक निश्चित तरीके से organize करने की ability provide करते है। कई बार किसी problem को solve करने के लिए data को किसी special तरीके से organize करने की आवश्यकता होती है।

इसका सबसे बेहतरीन उदाहरण Array है। Array भी एक collection ही होता है। इसमें एक type के data items continuous memory locations में store किये जा सकते है। यह उन situations में उपयोगी है जब आप एक ही type के items को एक साथ store करना चाहते है।

इसी प्रकार हर situation के लिए array भी उपयुक्त नहीं हो सकता है। उदाहरण के लिए आप चाहते की duplicate items न store किये जाये और store किये गए items को change नहीं किया जा सके। ऐसे में array को नहीं use किया जा सकता है। इसी प्रकार और भी कई situations हो सकती है जिनमें data को अलग तरीके से organize करने की आवश्यकता होती है।

ऐसी ही आवश्यकताओं को देखते हुए kotlin आपको कुछ built in collections provide करती है जो common operations के लिए उपयोग किये जा सकते है। 

Complex Data Types 

Kotlin में collections composite data types होते है। यानी की इनमे different types के data items को एक साथ store किया जा सकता है। उदाहरण के लिए आप एक collections में एक साथ string और numbers दोनों को store कर सकते है। 

Stores a Group of Data

Collections data types के द्वारा आप data के group को store करते है। Primitive types जैसे की int, double आदि के द्वारा single items को ही store किया जा सकता है।

Mutable and Immutable Collections

Kotlin आपको mutable और immutable दो प्रकार के collections provide करती है। Mutable collections वे होते है जिनके items को change किया जा सकता है और immutable collections वे होते है जिनके items को change नहीं किया जा सकता है।

सभी kotlin collections के mutable और immutable दो versions होते है। आप अपनी आवश्यकता अनुसार किसी भी प्रकार का collection create कर सकते है।

Collections API

Collections के साथ कार्य करने के लिए kotlin आपको एक सम्पूर्ण collection API provide करती है। यह API  kotlin.collections package के रूप में provide की गयी है। इस API में Collection, Iterable, List, Set और Map interfaces define किये गए है। 

इस API में कई standard library functions भी define किये गए है जो collections के साथ कार्य करने के लिए use किये जाते है। 

List

Kotlin आपको List collection provide करती है जो एक list की तरह data items को store करती है। यह Python में available List type जैसा ही है।

Can Have Variable Number of Elements

एक array की length हमेशा fixed होती है। उस length से अधिक items आप array में नहीं add कर सकते है। लेकिन एक List आपको अपनी आवश्यकतानुसार कितने भी elements add करने की ability provide करती है।

Elements Can Be Added And Removed As Well

List के अंदर आप elements को अपनी इच्छानुसार add और remove कर सकते है।

listOf() 

इस function का प्रयोग एक read only list create करने के लिए किया जाता है। यह items को argument के रूप में लेता है। इस प्रकार की list से items को change या remove नहीं किया जा सकता है।

val myList = listOf(“Red”,”Green”,”Blue”)   

mutableListOf() 

यह function एक mutable (read/write) list create करने के लिए use किया जाता है। Mutable list से आप items को remove और change कर सकते है।

val = myMutableList = mutableListOf(“Red”,”Green”,”Blue”)

List Properties

  • Size – List की size return करती है। 

List Functions 

  • contains() – क्या argument के रूप में pass किया गया item list में है?
  • containsAll() – क्या argument के रूप में pass किये गए collection के सभी items इस collection में है?
  • get() – Pass की गयी index से item को return करता है। 
  • indexOf() –  Pass किये गए item की first occurrence position को return करता है। 
  • isEmpty() – True return करता है यदि collection empty है तो। 
  • iterator() – iterator return करता है। 
  • lastIndexOf() – Pass किये गए item की last occurrence index return करता है। 
  • listIterator() – सभी list items के लिए list iterator return करता है। 
  • subList() – Pass की गयी integer starting और ending index positions के बीच से items को return करता है। 

Set

यदि आप चाहते है की आपका data unique और अपिरवर्तनीय हो तो ऐसे में आप set collection का प्रयोग कर सकते है। 

Every Element Has to Be Unique

Set collection unique data items को ही store करता है। इसलिए यह आवश्यक होता है की set को उन्हीं situations में उपयोग किया जाये जब आप unique data के साथ कार्य करना चाहते हों। 

Existing Elements Can Not Be Changed

एक set collection के elements को change नहीं किया जा सकता है। यह feature set को एक secure collection बनाता है। जब आप चाहते है की data को कोई बदल न पाए तो ऐसे में आप set collection का उपयोग कर सकते है। 

Does Not Support Indexing

Set collection indexing को support नहीं करता है। यानि की array की तरह set collection के items को आप indexing के द्वारा access नहीं कर सकते है। 

setOf() 

यह function एक Immutable (read only) set create करने के लिए प्रयोग किया जाता है। इसमें items argument के रूप में pass किये जाते है। इस प्रकार के set से items को remove नहीं किया जा सकता है।

val mySet = setOf(“Apple”,”Orange”,”Banana”)

mutableSetOf() 

इस function का प्रयोग एक mutable set create करने के लिए प्रयोग किया जाता है। एक mutable set collection से आप items को remove कर सकते है।

val myMutableSet = mutableSetOf(“Apple Orange”,”Banana”)

Set Properties 

  • size – Set collection की size return करती है। 

Set Functions 

  • contains 
  • containsAll 
  • isEmpty 
  • iterator 

Map

कई बार ऐसी situation हो सकती है की data आपको key/value pair में available हो। ऐसी situation में data को organize करने के लिए आप kotlin का map collection use कर सकते है। 

Group of Key/Value Pairs

एक Map collection में हर item key और value के pair में store किया जाता है। इसलिए Map collection को key/value pairs का group भी कहा जाता है। 

Key Needs to Be Unique 

Map collection में सभी keys unique होनी चाहिए। हालाँकि values duplicate हो सकती है।

mapOf()

इस function के प्रयोग से आप एक immutable map collection create कर सकते है। इसमें argument के रूप में items को comma से separate करके pass किया जाता है। Key और values को to keyword द्वारा एक साथ map किया जाता है।

val myMap = mapOf(“A” to “Apple”,”B” to “Banana”,”C” to “Cherry”) 

mutableMapOf() 

इस function के द्वारा आप एक mutable map create कर सकते है।

val mutableMapOf(“A” to “Apple”,”B” to “Banana”,”C” to “Cherry”)

Map Properties 

  • entries – Map के सभी items का read only set return करती है। 
  • keys – Map की सभी keys का read only set return करती है। 
  • size – Map collection की size return करती है। 
  • values – Map की सभी values का read only collection return करती है। 

Map Functions

  • containsKey – Map में pass की गयी key होने पर true return करता है। 
  • containsValue – Map में pass की गयी value होने पर true return करता है। 
  • get – Pass की गयी key की value को return करता है। 
  • getOrDefault – या तो pass की गयी key की value return की जाती है नहीं तो default value return की जाती है। 
  • isEmpty – Map के empty होने पर true return करता है। 

Kotlin का collection API बहुत ही large है। यँहा कुछ ही महत्वपूर्ण functions और properties के बारे में बताया गया है।

Previous: Kotlin Packages
Next: Kotlin Ranges

Kotlin in Hindi : Packages

  • Introduction to kotlin packages in Hindi
  • Default kotlin packages in Hindi
  • Importing kotlin packages in Hindi

Introduction to Kotlin Packages

एक package multiple source files (programs) का collection होता है। Package का प्रयोग related code files को organize करने के लिए किया जाता है।

उदाहरण के लिए आप एक ecommerce application create कर रहे है। आप इस application से सम्बंधित network connectivity, payment gateway, user interface और products आदि से सम्बंधित files को एक packages में organize कर सकते है।

Easy to Maintain Code 

Packages के माध्यम से code को maintain करना बहुत सरल होता है। जब packages में files को organize किया जाता है तो उन्हें आसानी से ढूँढा और maintain किया जा सकता है।

यदि files अलग अलग packages में ना होकर एक ही स्थान पर हो तो उन्हें ढूँढना और उपयोग करना बहुत मुश्किल होता है।

Improves Code Reusability

एक package की files को आप किसी भी दूसरी kotlin file में use कर सकते है। ऐसा आप उस package को import करके करते है। Packages के माध्यम से आप एक ही code को कई अलग अलग files में import करके use कर सकते है। इससे आपका समय बचता है और code reusability बढ़ती है। 

No Name Conflict 

एक ही file में same नाम की definitions (variable, function आदि) होने से name conflict create होता है और compiler error generate करता है। लेकिन यदि आप उन files को अलग अलग packages में रखते है तो किसी प्रकार name conflict generate नहीं होता है। 

Defined in the Beginning of File  

Package declaration source file की शुरुआत में किया जाता है। इसके बाद आप जो भी code लिखते है वह उस package में store किया जाता है। किसी भी दूसरी file में उस package को import करके code को use किया जा सकता है। 

Default Package

यदि आप file की शुरुआत में कोई भी package define नहीं करते है तो उस file का code default package में store होता है। Default package का कोई नाम नहीं होता है और उसे आप import नहीं कर सकते है।

package Keyword 

Package declare करने के लिए package keyword का प्रयोग किया जाता है। 

<packageKeyword> <packageName>

आप dot operator का प्रयोग करते हुए subpackage में भी किसी file के code को store कर सकते है।

<packageKeyword> <pacakgeName><.><subPacakgeName>

Default Kotlin Packages

Kotlin में ऐसे भी कुछ packages है जो हर kotlin file में automatically by default import किये जाते है। 

kotlin.*

यह package core functions और types provide करता है जो सभी platforms के लिए एक समान है। 

kotlin.annotations.*

यह package kotlin annotation facility के लिए library support provide करता है। 

kotlin.collections.*

यह package List, Set, Map आदि collection types और extension functions provide करता है। 

kotlin.comparisons.*

यह package Comparator instances create करने के लिए helper functions provide करता है। इससे kotlin 1.1 से include किया गया है। 

kotlin.io.*

यह package files और streams के साथ कार्य करने के लिए IO API provide करता है। 

kotlin.ranges.*

यह package ranges, progressions और related top level और extension functions के लिए support provide करता है। 

kotlin.sequences.*

यह package sequences और sequences के लिए available extension functions को instantiate करने के लिए top level functions provide करता है। 

kotlin.text.*

यह package text और regular expressions के साथ कार्य करने के लिए functions provide करता है। 

Kotlin Platform Specific Packages

kotlin कुछ ऐसे packages provide करती है जो सिर्फ specific platforms के लिए ही प्रयोग किये जाते है। 

java.lang.*

यह package java core library provide करता है। 

kotlin.jvm.*

यह package java platform के लिए functions और annotations provide करता है। 

kotlin.js.*

यह package JavaScript platform के लिए functions और दूसरी API’s provide करता है। 

Importing Kotlin Packages

Packages को import करने के लिए आप import keyword use करते है। Import keyword द्वारा आप classes, functions, properties और enum constants आदि import कर सकते है।

एक complete package को import करने के लिए * का प्रयोग किया जाता है। Compiler को * से यह पता चलता है की आप सम्पूर्ण package import करना चाहते है।

import myPackage.*

आप चाहे तो package में available किसी single definition को भी import कर सकते है।

import myPackage.myFunction

यदि same नाम के दो package होने से name clash हो रहा है तो ऐसे में आप किसी package को दूसरे नाम के रूप में भी import कर सकते है। इसके लिए as keyword का प्रयोग किया जाता है।

import myPackage as xPackage

ऊपर दिए गए statement में myPackage को xPackage के रूप में import किया गया है।

Previous: Kotlin Generics
Next: Kotlin Collections