KotlinPedia
81 subscribers
1 link
All about Kotlin
Download Telegram
Channel created
Hey Hey Hey πŸ‘‹ KotlinPedia kanaliga xush kelibsiz. πŸ”₯

Ushbu kanalda siz Kotlin dasturlash tilining eng nozik va o'ziga xos jihatlari bilan tanishishingiz, unda bo'layotgan o'zgarishlar va yangiliklardan boxabar bo'lishingiz mumkin bo'ladi.

Bundan tashqari kanalda Kotlin haqida kichik test va viktorinalar ham e'lon qilib boriladi va ularga javob topish orqali siz o'z bilimlaringizni mustahkamlab ham borishingiz mumkin.

Qiziqarli va foydali content hali oldinda! Shunday ekan kanalga obuna bo'ling va kuzatishda davom eting. 😎
πŸ‘6
Kotlin dasturlash tili zamonaviy, qulay va JVM da ishlovchi hamda Java kodlari bilan muloqotga kirisha oluvchi til hisoblanadi. Uning asosiy qulayliklaridan biri, hammamizga ma'lum bo'lgan class larning aloxida turi - data class hisoblanadi.

Data class e'lon qilishimiz uchun class kalit so'zi oldidan data kalit so'zini ko'rsatishimiz kerak bo'ladi va uning konstruktorida kamida 1ta parameter kiritishimiz kerak bo'ladi. Misol uchun:
data class Person(val name: String, val age: Int)


Data class e'lon qilishimiz bilan kotlin tili bizga bazi funksiyalarni yozib berishni boshlaydi. Bular:

- toString(): Bu funksiya obyektning string ko'rinishini qaytaradi.
- equals(): Ushbu funksiya bir xil data classdan olingan ikki obyektning teng ekanligini tekshiradi va tengligiga qarab, true yoki false javoblarini qaytaradi
- hashCode(): Bu funksiya obyektning hash qiynatini qaytaradi. Bu qiymat bizga obyektimizni hashmap yoki hashset kabi sturukturalarda saqlashda kerak bo'ladi.
- copy(): Bu funksiya esa obyektimizning bir yoki bir nechta hususiyatlarini Γ³zgartirgan holda yangi obyekt yaratishga yordam beradi. Yuqoridagi misolda yatatilgan obyektni boshqa ism bilan yangi obyektga ko'chirishimiz mumkin bΓ΄ladi:

val john = Person("John", 25)
val jane = john.copy(name = "Jane")


- componentN(): Bu bir nechta funksiyalar to'plami bo'lib, bizga data classning hususiyatlariga ularning konstrutordagi tartib raqami bilan murojat qilish imkonini beradi. Misol uchun, ism va yoshga murojat qilishda:
val john = Person("John", 25)
val name = john.component1()
val age = john.component2()


componentN() funksiyasi ayniqsa sturukturasiz qiymatlashda yaniy data class hususiyatlarini aloxida o'zgaruvchilarga bir qatorda qiymatlashda qulaylik yaratadi:
val john = Person("John", 25)
val (name, age) = john


Va bu quyidagi kodga teng bo'ladi:
val john = Person("John", 25)
val name = john.name
val age = john.age


Data classlar ma'lumotlarni saqlash va ular ustida o'zgarishlar qilish uchun eng qulay class turi hisoblanadi. Eng muhumi esa data classlarni o'qish juda oson. Lekin data classlarni ishlatish uchun bazi bir qoidalar va cheklovlar ham mavjud. Bular:

- Data classlarda abstract, open va sealed kalit so'zlari ishlatish mumkin emas.
- Data classlar boshqa classlardan nasil ololmaydi.
- Data class konstruktorida kamida 1ta parameter bo'lishi kerak

Bu Data class haqida qisqacha post edi. Agar ko'proq o'rganishni xohlasangiz quyidagi havola orqali rasmiy dokumentsiyaga o'tishingiz mumkin.
πŸ‘12πŸ”₯3⚑1
πŸ‘9
Ertalabdan savol, ketadiyuu

Quyidagi ko'rinishda e'lon qilingan data class bilan qanday muammo bo'lishi mumkin?


data class A(var someVar: String)


Javobni izohlarda qoldiring
Kotlin Extension Functions

Kotlin dasturlash tilining yana bir ajoyib qulayliklaridan biri bu - classlarning kodlariga tegmasdan yoki ulardan nasil olmay turib yangi funksional qoshish imkonini beruvchi extension funksiyalar. Bu qulaylik sizga standart kutubxonalardagi classlarga qoshimchalar qilishda juda kerak bo'ladi.

Extension funksiyalarni e'lon qilishda funksional qoshiladigan class nomi ortidan nuqta qoyilgan holda funsiya nomini yozish kerak bo'ladi. Misol uchun:
kotlin

fun String.reverse(): String {
return this.reversed()
}


Ushbu koddagi this kalit so'zi orqali ushbu funksiya chaqirilgan obyektga murojat qilish mumkin bo'ladi va bu funksiyani obyektning qolgan funksiyalari kabi chaqirish
kotlin
mumkin bo'ladi.

val name = "Kotlin"
val reversed = name.reverse()
// "niltoK"


Bundan tashqari siz toplamlar kabi generic turlar uchun ham extension funsiya yozishingiz mumkin

fun <T> List<T>.shuffle(): List<T> {
return this.toMutableList().apply {
Collections.shuffle(this)
}
}
πŸ‘6πŸ”₯2
fun String.reverse(): String {
return this.reversed()
} Ushbu funksiya Javaga compile qilinganda qanday funksiyaga aylanadi?
Anonymous Quiz
42%
String class uchun static funksiya
19%
File nomilik class uchun static funksiya
14%
String class uchun oddiy funksiya
25%
Extensions class uchun oddiy funksiya
πŸ”₯4
class Test {
fun String.reverse(): String{
return this.reversed() } } // Ushbu funksiya Javaga compile qlinganda qanday funksiyaga aylanadi?
Anonymous Quiz
33%
String class uchun static funksiya
18%
Test class uchun oddiy funksiya
42%
Test class uchun static funksiya
7%
Extensions class uchun oddiy funksiya
πŸ‘1πŸ”₯1