Published on

Swiftda Struct

Authors

Swiftda struct turli ma'lumot turlaridagi o'zgaruvchilarni saqlash uchun ishlatiladi. Masalan,

Faraz qilaylik, biz odamning ismi va yoshini saqlashni xohlaymiz. Biz ikkita o'zgaruvchi yaratishimiz mumkin: name va age va ularga qiymat berishimiz mumkin.

Ammo bir nechta odamlarning bir xil ma'lumotlarini saqlashni xohlasak-chi?

Bunday holatda har bir odam uchun o'zgaruvchilar yaratish zerikarli vazifa bo'lishi mumkin. Buni hal qilish uchun ism va yoshni saqlaydigan struct yaratishimiz mumkin. Endi bu structdan har bir odam uchun foydalanishimiz mumkin.

Structni e'lon qilish

Swiftda struct e'lon qilish sintaksisi:

struct StructureName {
  // struktura ta'rifi 
}

Bu yerda:

  • struct β€” structni e'lon qilish uchun ishlatiladigan kalit so'z
  • StructName β€” structning nomi

Keling, misolni ko'raylik:

struct Person {

  var name = ""     // ism
  var age = 0       // yosh
}

Bu yerda Person nomli struct e'lon qildik. Jingalak qavslar {} ichida struct mos ravishda "" va 0 qiymatlarga ega ikkita o'zgaruvchini o'z ichiga oladi: name va age.

Struct ichidagi o'zgaruvchilar va konstantalar property (xususiyat) deyiladi.

Struct Instancelari

Struct ta'rifi shunchaki loyihadir. Structdan foydalanish uchun uning instancesini yaratishimiz kerak. Masalan,

struct Person {

  var name = " "     // ism
  var age = 0        // yosh
}

// structdan instance yaratish
var person1 = Person()

Bu yerda struct nomi Person dan keyin standart initializer () yozib instance yaratdik.

Endi struct propertylariga murojaat qilish va ularni o'zgartirish uchun person1 instancedan foydalanishimiz mumkin. Masalan,

// name propertyni o'zgartirish
person1.name = "Swift"

// age propertyga murojaat
person1.age

Bu yerda struct propertylariga murojaat qilish uchun nuqta . belgisidan foydalandik.

Misol:

// structni e'lon qilish 
struct Person {

// ikkita property e'lon qilish
 var name = ""     // ism
 var age = 0       // yosh
}

// Person dan instance yaratish
var person1 = Person()

// propertylarga murojaat va yangi qiymatlar berish
person1.age = 21
person1.name = "Rick"

print("Ism: \(person1.name) va Yosh: \(person1.age)")

Natija:

Ism: Rick va Yosh: 21

Yuqoridagi misolda ikkita propertyga ega Person nomli struct e'lon qildik: name va age.

Shuningdek, Person structidan person1 nomli instance yaratdik.

Nihoyat, . belgisi yordamida instancening propertylariga murojaat qildik va ularni o'zgartirdik.

Misol:

// structni e'lon qilish
struct Student {

// property e'lon qilish
var studentID = 0     // talaba IDsi
}

// Student dan instance
var student1 = Student()

// propertylarga murojaat va yangi qiymatlar berish
student1.studentID = 101

print("Talaba ID: \(student1.studentID)")

// Student dan yana bir instance
var student2 = Student()

// propertylarga murojaat va yangi qiymatlar berish
student2.studentID = 102

print("Talaba ID: \(student2.studentID)")

Natija:

Talaba ID: 101
Talaba ID: 102

Yuqoridagi misolda Student structidan ikkita instance yaratdik: student1 va student2.

Structdan xohlagancha instancelar yaratishimiz mumkin.

Swift Memberwise Initializer

Avvalroq biz struct propertyga standart qiymat berdik.

struct Person {
  
  var name = ""     // ism
}

Standart initializerdan foydalanib instance yaratdik.

var person1 = Person()

Ammo agar struct propertyga standart qiymat bermasak:

struct Person {
  
  var name: String     // ism
}

Instance yaratayotganda qiymat uzatamiz:

var person1 = Person(name: "Kyle")

Bu yerda qavslar () ichidagi qiymatlar avtomatik ravishda structning mos propertylariga tayinlanadi. Bu memberwise initializer deyiladi.

Struct propertyga standart qiymat bergan bo'lsak ham memberwise initializerdan foydalanishimiz mumkin.

Misol:

struct Person {

// standart qiymatga ega bo'lmagan propertylar
var name: String     // ism
var age: Int         // yosh
}

// memberwise initializer bilan Person dan instance  
var person1 = Person(name: "Kyle", age: 19)

print("Ism: \(person1.name) va Yosh: \(person1.age)")

Natija:

Ism: Kyle va Yosh: 19

Yuqoridagi misolda Person structi uchun person1 instancesini yaratdik.

Propertylarga standart qiymat bermaganimiz uchun qiymat berish uchun memberwise initializerdan foydalandik.

Struct ichida funksiya

Swift struct ichida funksiya ham e'lon qilishimiz mumkin. Struct ichida e'lon qilingan funksiya metod deyiladi.

Keling, misolni ko'raylik:

struct Car {

  var gear = 0     // tishli

  // struct ichida metod
  func applyBrake(){
    print("Gidravlik tormozlarni qo'llash")
  }
}

// instance yaratish 
var car1 = Car()

car1.gear = 5

print("Tishli raqami: \(car1.gear)")
// metodga murojaat
car1.applyBrake()

Natija:

Tishli raqami: 5
Gidravlik tormozlarni qo'llash

Yuqoridagi misolda Car structi ichida applyBrake() nomli metod e'lon qildik. Metodga murojaat qilishga e'tibor bering:

car1.applyBrake()

Bu yerda struct ichida e'lon qilingan metodga murojaat qilish uchun . belgisidan foydalandik. Nihoyat, metod ichidagi operator bajariladi.