- Published on
Swift-da Filter, Sort va Map
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Hammaga xush kelibsiz, mening ismim Nik, bu “Swiftful Thinking”. Va’da qilganimdek, o‘tgan videoda to‘plamlarni qo‘lda aylanib chiqishni (loop) ko‘rdik – for item in collection yozib, har bir elementni qo‘lda aylandik.
Swift’da buni avtomatik qilish uchun qulay usullar ham bor – har safar qo‘lda loop yozish shart emas. Eng keng tarqalgan uchta usul:
- Filtering – array’dan ma’lum shartga mos keladigan elementlarni filtr qilish.
- Sorting – array’dagi elementlarni tartiblash (masalan, alifbo bo‘yicha).
- Mapping – ma’lumot turini boshqasiga aylantirish (masalan, struct array’ini string array’iga).
Bu videoda ushbu uchta usulning metodlarini ko‘ramiz – ular ilova qurishda juda kuchli. Keyingi pleylist – SwiftUI Bootcamp – ekranlar qurishni o‘rgatadi, lekin unda dastlab bu usullarni ko‘p ishlatmaymiz. Shu bois hozir ularni har kuni ishlatmasangiz ham, “vositalar qutingizda” bo‘lishi uchun tanishamiz. Keling, kodga o‘tamiz – filtr qilamiz, tartiblaymiz va o‘zgartiramiz!
Yana xush kelibsiz!
Hammaga xush kelibsiz! Bu pleylistni deyarli yakunladik – xavotirlanmang, bu video dastlab rejalashtirilmagan edi, lekin qisqacha ko‘rib chiqishga arziydi. Chuqur kirmaymiz, chunki keyingi 50 videoda (kanalimda) bularni ishlatmaysiz. Bu haqda chuqurroq videolarim bor, lekin ular o‘rta darajali – hozir faqat yangi boshlovchilar uchun oddiy ko‘rinish beraman: filtering, sorting va mapping.
Yangi fayl yarating: Navigator-da o‘ng tugma bilan bosing, yangi Playground sahifasini yarating va uni “Filter Sort” deb nomlang.
Ma’lumot modelini yaratish
struct DatabaseUser {
let name: String
let isPremium: Bool
let order: Int
}
let allUsers: [DatabaseUser] = [
DatabaseUser(name: "Nick", isPremium: true, order: 4),
DatabaseUser(name: "Emily", isPremium: false, order: 1),
DatabaseUser(name: "Samantha", isPremium: true, order: 3),
DatabaseUser(name: "Joe", isPremium: true, order: 10000),
DatabaseUser(name: "Chris", isPremium: false, order: 2)
]
DatabaseUser– foydalanuvchi modeli: ism, premium holati, tartib raqami.allUsers– barcha foydalanuvchilar array’i.
Filter
Qo‘lda loop bilan
var allPremiumUsers: [DatabaseUser] = []
for user in allUsers {
if user.isPremium {
allPremiumUsers.append(user)
}
}
print(allPremiumUsers) // [Nick, Samantha, Joe]
- Premium foydalanuvchilarni filtrlaydi.
filter metodi bilan
var allPremiumUsers: [DatabaseUser] = allUsers.filter { user in
if user.isPremium {
return true
} else {
return false
}
}
print(allPremiumUsers) // [Nick, Samantha, Joe]
filter– array’dan shartga mos elementlarni qaytaradi.- Ichida loop avtomatik ishlaydi – qo‘lda yozish shart emas.
Qisqartirish
var allPremiumUsers: [DatabaseUser] = allUsers.filter { user in
user.isPremium
}
isPremium–Bool, shuning uchunifvareturnni qisqartirib, faqat shartni yozsak kifoya.
Shorthand sintaksis
var allPremiumUsers2: [DatabaseUser] = allUsers.filter { $0.isPremium }
$0– loop’dagi elementni anglatadi (tuple’dagi0kabi).- Bir qatorli qulay yozuv – yangi boshlovchilar uchun murakkab ko‘rinishi mumkin, lekin bir xil ishlaydi.
Sort
var orderedUsers: [DatabaseUser] = allUsers.sorted { user1, user2 in
if user1.order < user2.order {
return true
} else {
return false
}
}
print(orderedUsers) // [Emily(order: 1), Chris(2), Samantha(3), Nick(4), Joe(10000)]
sorted– array’ni tartiblash.user1vauser2– har bir juftni taqqoslaydi,orderbo‘yicha kichikdan kattaga tartiblaydi.
Qisqartirish
var orderedUsers: [DatabaseUser] = allUsers.sorted { user1, user2 in
user1.order < user2.order
}
<–Boolqaytaradi,ifvareturnkeraksiz.
Shorthand sintaksis
var orderedUsers2: [DatabaseUser] = allUsers.sorted { $0.order < $1.order }
$0,$1– birinchi va ikkinchi elementlar.- Tuple’dagi
0va1ga o‘xshaydi (Tuple videosidan eslang).
Map
var userNames: [String] = allUsers.map { user in
return user.name
}
print(userNames) // ["Nick", "Emily", "Samantha", "Joe", "Chris"]
map– array turini o‘zgartiradi (DatabaseUser’dan String’ga).- Har bir elementning
namexususiyatini oladi.
Shorthand sintaksis
var userNames2: [String] = allUsers.map { $0.name }
$0– elementni qisqa yozish.
Xulosa
Bu videoda filtering, sorting va mappingni ko‘rdik – ular ilova qurishda juda kuchli vositalar. Qo‘lda loop yozish o‘rniga bu metodlardan foydalaning – bu samaraliroq.
SwiftUI Bootcamp’da dastlab bularni ko‘p ishlatmaymiz, lekin ularni bilish “vositalar qutingiz”ni boyitadi. Keyingi videoda bu pleylistni yakunlaymiz.
Men Nikman, bu “Swiftful Thinking”, keyingi videoda ko‘rishguncha!