Lambda sintaksisi, it, forEach, filter, map, zanjir
Nomsiz funksiya
Aylanish va tanlash
O'zgartirish
Map da kalit yo'q bo'lsa map[kalit] nima qaytaradi?
null.Nomsiz funksiya
val kvadrat = { x: Int -> x * x }
println(kvadrat(5)) // 25
val ikkilash: (Int) -> Int = { it * 2 }
println(ikkilash(7)) // 14
val salom = { ism: String -> "Salom, $ism!" }
println(salom("Ali")) // Salom, Ali!
(Int) -> Int — funksiya turi: «Int oladi, Int qaytaradi». Lambdaning turi kompilyatorga ma'lum bo'lsa, it ni ishlatsangiz kod qisqa bo'ladi.Bitta parametrli lambdada parametr nomisiz qanday ishlatiladi?
it deb ataladi.Aylanish va tanlash
val sonlar = listOf(1, 2, 3, 4, 5, 6)
sonlar.forEach { println(it) }
val juft = sonlar.filter { it % 2 == 0 }
println(juft) // [2, 4, 6]
println(sonlar.count { it > 3 }) // 3
println(sonlar.any { it > 5 }) // true
val narxlar = mapOf("Laptop" to 1200.0, "Phone" to 800.0, "Watch" to 250.0)
println(narxlar.filter { it.value > 500 }) // {Laptop=1200.0, Phone=800.0}
filter yangi ro'yxat qaytaradi, asl ro'yxatni o'zgartirmaydi. Natijani o'zgaruvchiga saqlashni unutmang.listOf(1, 2, 3, 4).filter { it > 2 } natijasi?
it > 2 shartiga 3 va 4 mos.O'zgartirish
val nomlar = listOf("ali", "vali", "gulnora")
println(nomlar.map { it.uppercase() }) // [ALI, VALI, GULNORA]
val sonlar = listOf(1, 2, 3, 4, 5, 6)
println(sonlar.map { it * it }) // [1, 4, 9, 16, 25, 36]
val jami = sonlar.filter { it > 2 }.map { it * 10 }.sum()
println(jami) // 180
map natijasi — yangi ro'yxat: uni o'zgaruvchiga saqlang yoki println ga bering. Asl ro'yxat o'zgarmaydi.listOf(1, 2, 3).map { it * 2 } natijasi?
Tanlash — filter, o'zgartirish — map.
Nomsiz funksiya { x -> ... }
Bitta parametrli lambdaning standart nomi
Shartga mos elementlarni tanlash
Har elementni o'zgartirish
filter { shart }.
map { amal }.
sum, count, forEach.
| Funksiya | Vazifasi | Natija turi |
|---|---|---|
forEach | Har biriga amal | Hech narsa |
filter | Shartga mosini tanlash | Yangi ro'yxat |
map | Har birini o'zgartirish | Yangi ro'yxat |
count | Mos elementlar soni | Int |
any | Kamida bittasi mosmi | Boolean |
Pastga bosing: funksiyalar
filter bilan narxi 500 dan yuqori mahsulotlarni tanlang.map bilan mahsulot nomlarini katta harflarga o'tkazing va forEach bilan chiqaring.
val juft = mutableListOf<Int>()
for (n in sonlar) { if (n % 2 == 0) juft.add(n) }
val juft = sonlar.filter { it % 2 == 0 }
Qisqa va o'qilishi oson kod.
forEach bilan chiqaring.1..10 dan juft sonlarni filter bilan oling.listOf(1, 2, 3, 4) kvadratlari ro'yxatini map bilan oling.{ x -> ... }, it.
Shartga mos elementlar.
Har elementni o'zgartirish, zanjir.
Uyga vazifa: filter, map, forEach bilan mahsulotlarni qayta ishlash.
Inkapsulyatsiya va kirish huquqlari
6-hafta · 18-dars