- Published on
Swift-da asosiy turlardan qanday foydalanish kerak (Bool, String, Int)
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Hammaga yana xush kelibsiz! Mening ismim Nick, bu β Swiftful Thinking kanali. Oldingi videoda biz loyihani sozlashning asosΠ»Π°ΡΠΈΠ½ΠΈ ko'rib chiqdik, izoh yozishni va camel case uslubini o'rgandik. Endi esa haqiqiy kod yozish vaqti keldi β shuning uchun ushbu videoda haqiqiy ma'lumotlarni ko'rib chiqamiz.
Dasturlashda siz ishlatadigan har qanday ma'lumot doim o'z turiga ega bo'ladi. Shuning uchun bu videoda biz asosiy turlardan ba'zilarini ko'rib chiqamiz β xususan string (matn), boolean (mantiqiy qiymat) va raqamlar.
Bu juda oddiy tuyulishi mumkin, ammo agar siz hali kod yozmagan bo'lsangiz, bularning ko'pi siz uchun yangilik bo'ladi. Buni hech qachon kod yozmagan odamga eng oddiy tushuntirish yo'li β Microsoft Word yoki Excel-dan misol keltirishdir: siz matnni belgilab, uning formatini o'zgartirishingiz mumkin β masalan, sanaga, foizga yoki raqamga aylantirishingiz mumkin. Aslida shu kabi narsa: bizda ma'lumot bor va biz uni qaysi turga tegishli ekanligini belgilashimiz kerak, va ma'lumot turiga qarab uni kodda boshqacha yozamiz.
String β matn
Birinchi ko'rib chiqadiganimiz β string. String β bu dasturchi bo'lmagan odam "oddiy matn" deb ataydigan narsa. String orqali biz ekranga haqiqiy matnni chiqaramiz.
Shuningdek biz boolean turini ham ko'rib chiqamiz β bu biror narsaning rost yoki yolg'on ekanligini bildiradi, va faqat shu ikkisidan biri bo'ladi. Keyin esa raqamlarga o'tamiz β Swift-da bir nechta xil raqam turlari mavjud, va biz ularning qaysi birini qachon ishlatishimiz kerakligini ko'rib chiqamiz.
Bu mavzular keyingi bir necha video uchun zamin bo'ladi, chunki biz shu turlardan foydalanib funksiyalar yaratishni va haqiqiy kod yozishni boshlaymiz.
Playground-da ishlash
Oldingi videoda biz Swift playground-ida ishlashning asoslarini ko'rib chiqdik. Eslatib o'tamiz: biz Xcode ichidagi Swift playground-da ishlayapmiz. Navigator-da o'ng tugmani bosib, yangi playground sahifa yaratdik va unga Basic Types deb nom berdik. Ushbu videoda aynan shu sahifada ishlaymiz.
Agar siz hozir qo'shilayotgan bo'lsangiz, yangi playground sahifa yarating β u oddiy bo'sh Swift fayli bo'ladi. Standart kodni o'chirib tashlaymiz va Foundationni import qilamiz:
import Foundation
Foundation β bu, aslida, Swift-ning eng asosiy moduli. Unda biz import qilishni xohlaydigan asosiy turlar va Swift xususiyatlari mavjud.
Kod yozayotganimizda biz turli xil ma'lumot turlaridan foydalanamiz. Hozircha faqat asoslarni ko'rib chiqamiz, lekin keyinroq o'zimizning turlarimizni yaratishni ham o'rganamiz.
Avvalgi videoda greeting nomli o'zgaruvchi bor edi va u "Hello, playground"ga teng edi. Bu qiymat qo'shtirnoq ichiga olingan edi, chunki u string turiga tegishli. Demak, kod yozganimizda biz doim qaysi turga tegishli bo'lgan obyekt yaratamiz, so'ngra unga shu turdagi qiymat beramiz. Shuning uchun bu videoda aynan shu obyektlarga chuqurroq to'xtalamiz.
Shuni ham ta'kidlab o'tamiz: oldingi misolda var ishlatilgan edi, ammo bu videoda biz let so'zidan foydalanamiz. var va let orasidagi farqni keyingi videoda tushuntiraman β hozircha bu sizni chalg'itmasin.
Keling, kodni tozalab, qaytadan Foundationni import qilib, boshidan boshlaymiz:
import Foundation
let myFirstItem = "Hello world"
Biror narsa shu tarzda qo'shtirnoq ichiga olinganida, u string turiga tegishli bo'ladi. String β bu dasturchi bo'lmagan odam "oddiy matn" deb ataydigan narsa.
String β bu oddiy matn.
Agar "Hello world" ekranga chiqarmoqchi bo'lsam, men buni string sifatida yozaman. Agar qo'shtirnoqlarni olib tashlab, shunchaki Hello world deb yozsam, kod kompilyatsiya bo'lmaydi β chunki kompilyator (kodimizni o'qiyotgan dastur) bu nima ekanligini bilmaydi. U bu matn ekanligini, yoki bu kodning bir qismi ekanligini bilmaydi, shuning uchun "cannot find in scope" degan xatolikni ko'rsatadi. Shuning uchun biz bu qiymatni qo'shtirnoq ichiga olamiz β va Xcode bu endi string ekanligini to'q sariq rang bilan ko'rsatadi.
Agar Swift-da Option tugmasini bosib turib biror element ustiga bosib qarasangiz, uning deklaratsiyasini ko'rishingiz mumkin. Masalan, myFirstItem aynan string turiga tegishli ekanligini ko'ramiz. Buni kodda ham aniq yozishimiz mumkin:
import Foundation
let myFirstItem: String = "Hello world"
Buni yozish yoki yozmaslik orasida hech qanday farq yo'q. Siz Swift-ni yaxshi o'rgangach, ehtimol buni alohida yozmay qo'yasiz, ammo o'rganish jarayonida turlarni aniq ko'rsatib borish β yaxshi odat hisoblanadi, chunki bu kodni aniqroq qiladi.
Demak, bu β myFirstItem nomli, string turidagi konstanta, va biz unga "Hello world" qiymatini berdik.
Avval yaratilgan obyektga murojaat qilish
Kodda biror narsa yaratilgandan so'ng, biz unga keyinroq murojaat qilishimiz mumkin:
import Foundation
let myFirstItem: String = "Hello world"
let myTitle = myFirstItem
print(myTitle)
myFirstItemga murojaat qilganimizda, Xcode bizga uning string turiga tegishli ekanligini ko'rsatadi. Demak, myTitlening qiymati myFirstItemning qiymatiga teng bo'ladi: agar myFirstItem "Hello world"ga teng bo'lsa, myTitle ham endi "Hello world"ga teng bo'ladi.
Biz avval yaratilgan obyektlarga murojaat qilishimiz mumkin.
Aslida, sizning butun kodingiz shundan iborat bo'ladi: biz biror fayl yoki ekran yaratamiz, so'ngra boshqa fayl va ekranlarda avvalgi fayl va ekranlarga murojaat qilamiz.
Bool β rost yoki yolg'on
Endi boshqa turga o'taylik. Agar bizga shunchaki string emas, balki rost yoki yolg'on bo'lgan narsa kerak bo'lsa β kodda buni boolean deb ataymiz (qisqacha β bool).
Bool β rost (true) yoki yolg'on (false).
let mySecondItem = true
let myThirdItem = false
Option tugmasini bosib mySecondItem ustiga bossak, uning Bool turiga tegishli ekanligini ko'ramiz. Buni ham aniq ko'rsatishimiz mumkin:
let mySecondItem: Bool = true
let myThirdItem: Bool = false
String va boolean-dan qachon foydalanish kerakligi haqida gapirsak: texnik jihatdan siz quyidagicha ham yozishingiz mumkin:
// let myFourthItem: String = "true"
Ammo bu yomon dasturlash hisoblanadi. Agar biror narsa faqat rost yoki yolg'on bo'lishi mumkin bo'lsa, biz Bool turidan foydalanishimiz kerak, chunki bu holda kodimizda "agar bu rost bo'lsa", "agar bu yolg'on bo'lsa" kabi shartlarni yoza olamiz. Lekin kompilyator yuqoridagi misolda bu rost/yolg'on bayonot ekanligini bilmaydi β u buni shunchaki matn deb hisoblaydi. Shuning uchun bunday yozish tavsiya etilmaydi.
Swift β type-safe (turga xavfsiz) til
Endi Swift-ning eng muhim xususiyatlaridan birini ko'rsatib o'taman β bu sizning eng yaqin do'stingizga aylanadi: Swift β type-safe (turga xavfsiz) til.
// let myFifthItem: Bool = "Hello world"
// Xatolik: Cannot convert value of type 'String' to specified type 'Bool'
Bu yerda kompilyator xatolik beradi va bu string qiymatini biz Bool deb belgilagan turga o'tkazib bo'lmaydi, deydi. Aynan shu β Swift-ning type-safe til ekanligini bildiradi: agar siz kompilyatorga biror narsa Boolean bo'lishi kerak deb aytsangiz, so'ngra uni Boolean bo'lmagan narsaga tenglashtirsangiz, kod kompilyatsiya bo'lmaydi.
Bu biz dasturchilar uchun juda foydali narsa, chunki agar bu qator ilovamizda ishlatilsa, u albatta xatolikka olib kelardi β chunki kodimiz Boolean kutadi, lekin string oladi.
Bu xatolikni tuzatish uchun, albatta, qiymat sifatida Boolean berishimiz kerak:
let myFifthItem: Bool = true
Aksincha holat ham to'g'ri bo'ladi β agar string deb belgilangan narsani Boolean qiymatga tenglashtirsak, bu ham ishlamaydi, chunki Boolean-ni string-ga tenglashtirib bo'lmaydi:
// let mySixthItem: String = true // ishlamaydi
let mySixthItem: String = "Hello world" // to'g'ri
Endi sizga shuni ko'rsatmoqchiman: agar siz turni aniq belgilamasangiz, qiymatga istalgan narsani berishingiz mumkin:
let mySixthItem: String = true // ishlamaydi
let mySixthItem: String = "Hello world" // to'g'ri
Endi sizga shuni ko'rsatmoqchiman: agar siz turni aniq belgilamasangiz, qiymatga istalgan narsani berishingiz mumkin:
let mySeventhItem = true // hozir bu Bool
// let mySeventhItem = "Hello world" // bu esa String bo'lardi
Option tugmasini bosib qarasangiz, hozir bu Bool ekanligini ko'rasiz. Lekin uni "Hello world"ga ham tenglashtirishingiz mumkin edi β shunda u string bo'lardi. Ammo bir marta tur belgilangandan so'ng, u o'zgarmaydi: agar u string bo'lsa, u doim string bo'lib qoladi; agar u Boolean bo'lsa, u doim Boolean bo'lib qoladi.
Endi siz Swift-ning type-safe til ekanligi nimani anglatishini bilasiz, va bu murakkabroq kod yozishni boshlaganimizda juda muhim ahamiyat kasb etadi.
Date β sana
Yana ikkita turga qisqacha to'xtalib o'taman. Swift-da Date turi mavjud β bu aynan kutilganidek ishlaydi:
let myFirstDate: Date = Date.now
print(myFirstDate)`
Date() qavslarini ochib-yopib yozsak, bu qiymat hozirgi vaqtni bildiradi. Agar shu kodni ishga tushirsak va natijani ko'rsak β bu hozirgi sana va vaqt bo'ladi.
Date turida juda ko'p qulay accessor (murojaat usullari) mavjud. Nuqta (.) bosganimizda now, distantPast, distantFuture kabi turli vaqt oraliqlaridan sanalarni ko'rishimiz mumkin. Hozircha bularga chuqur to'xtalmaymiz, lekin shuni bilib oling β Swift-da Date degan tur bor, va biz sanalar bilan shu orqali ishlaymiz.
Odatda, ma'lumotlar bazasi bilan ishlaganimizda yoki obyektlar yaratganimizda, biz ko'pincha obyekt qachon yaratilgani yoki saqlangani haqida kuzatib boramiz β va buning uchun Date turidan foydalanamiz.
Raqamlar: Int, Double, CGFloat
Ushbu videoda ko'rib chiqadiganim oxirgi mavzu β raqamlar, chunki biz ushbu pleylist davomida raqamlardan juda ko'p foydalanamiz.
Raqamlar Int, Double, CGFloat va boshqa turlarda bo'lishi mumkin.
Boolean haqida o'ylaganda u doim Bool bo'ladi β rost yoki yolg'on. String haqida o'ylaganda u doim String bo'ladi. Lekin raqam haqida o'ylaganda, aslida bir nechta xil tur mavjud bo'lib, ularning barchasi tashqi ko'rinishi bo'yicha raqamga o'xshaydi β bu esa, ayniqsa hech qachon kod yozmagan odamlar uchun, biroz chalkash bo'lishi mumkin.
let myFirstNumber = 1
let mySecondNumber = 1.0
Option tugmasini bosib myFirstNumber ustiga bossak, bu Int (integer β butun son) ekanligini ko'ramiz. mySecondNumber ustiga bossak, esa bu Double ekanligini ko'ramiz. Bular bir-biriga juda o'xshash ko'rinsa-da, ular boshqa-boshqa turlar.
Swift-da turli sonli qiymatlar uchun turli turlar mavjud:
Int β bu butun son. Ya'ni 1, 2, 3, 10, 100 β lekin integer-da hech qanday kasr (decimal) bo'lmaydi.
let myFirstNumber: Int = 1
Agar son kasrli bo'lsa, odatda u Double yoki CGFloat bo'ladi:
let mySecondNumber: Double = 1.0
let myThirdNumber: CGFloat = 1.0
Aslida bu ikkisi β Double va CGFloat β deyarli bir xil narsa. Ammo, hech bo'lmaganda o'rganish bosqichida, quyidagi qoidaga amal qilish mumkin:
Matematik hisob-kitoblar uchun β Double, interfeys (UI) elementlari uchun β CGFloat.
Agar biz "buni shu bilan ko'paytirib, shunga bo'lamiz" desak β Double ishlatamiz. Agar "buni ekranning chetidan 15 piksel qilib qo'yamiz", "buyumning balandligini 45 piksel qilamiz" yoki "shrift o'lchamini 42 qilamiz" desak β CGFloat ishlatamiz, chunki bular interfeys komponentlari. Bu qattiq qoida emas, faqat umumiy yo'l-yo'riq.
Eng muhim narsa shuki, agar siz jiddiy matematik hisoblar bilan shug'ullansangiz, Double ishlatishingiz kerak β chunki, masalan, ikkita integer-ni bir-biriga bo'lsangiz, bu muammo keltirib chiqarishi mumkin: integer-larni bo'lish natijasi ko'pincha kasr songa teng bo'ladi, integer esa kasrlarni qo'llab-quvvatlamaydi. Double esa qo'llab-quvvatlaydi. Shuning uchun ikkita double-ni bir-biriga bo'lsangiz, natija sizga kerak bo'lgan qiymatga ko'proq mos keladi.
Xulosa: let va var
Ushbu videoda biz yaratgan barcha narsalar let orqali yaratildi. let β bu konstanta deb ataladi. Esingizda bo'lsa, videoning boshida var degan narsa ham bor edi β bu o'zgaruvchi. Ulardagi farq shundaki: o'zgaruvchilar (var) o'z qiymatini o'zgartirishi mumkin, let esa bir marta nimaga teng bo'lsa, hech qachon o'zgarmaydi.
Keyingi videoda aynan var va let orasidagi farqni batafsil o'rganamiz.
Bu videoda biz quyidagilarni o'rgandik:
- String β oddiy matn
- Bool β rost yoki yolg'on
- Date β sana va vaqt
- Int β butun son
- Double va CGFloat β kasr sonlar
- Swift type-safe til ekanligi va bu nimani anglatishi
Tomosha qilganingiz uchun rahmat! Men β Nick, bu Swiftful Thinking, keyingi videoda ko'rishamiz!