Belajar Swift : Cara Menggunakan Properti di Swift - Masnaato
Skip to content Skip to sidebar Skip to footer

Belajar Swift : Cara Menggunakan Properti di Swift

Cara Menggunakan Properti di Swift



Bahasa Swift 4 menyediakan properti untuk kelas, enumerasi, atau struktur untuk mengaitkan nilai. Properti dapat diklasifikasikan lebih lanjut menjadi properti Tersimpan dan Properti yang dihitung.

Perbedaan antara Properti Tersimpan dan Properti Terhitung

Properti TersimpanProperti Terhitung
Simpan nilai konstan dan variabel sebagai contohHitung nilai daripada menyimpan nilai
Disediakan oleh kelas dan strukturDisediakan oleh kelas, enumerasi dan struktur

Properti Stored dan Computed keduanya terkait dengan jenis instance. Ketika properti dikaitkan dengan nilai tipenya maka itu didefinisikan sebagai 'Tipe Properti'. Properti yang disimpan dan dihitung biasanya dikaitkan dengan instance dari tipe tertentu. Namun, properti juga dapat dikaitkan dengan tipe itu sendiri. Properti semacam itu dikenal sebagai properti tipe. Pengamat properti juga digunakan

  • Untuk mengamati nilai properti yang disimpan
  • Untuk mengamati properti subclass yang diturunkan dari superclass

Properti Tersimpan

Swift 4 memperkenalkan konsep Properti Tersimpan untuk menyimpan contoh konstanta dan variabel. Properti tersimpan konstanta ditentukan oleh kata kunci 'let' dan properti variabel Tersimpan ditentukan oleh kata kunci 'var'.

  • Selama definisi Properti tersimpan memberikan 'nilai default'
  • Selama Inisialisasi, pengguna dapat menginisialisasi dan mengubah nilai awal
struct Number {
   var digits: Int
   let pi = 3.1415
}

var n = Number(digits: 12345)
n.digits = 67

print("\(n.digits)")
print("\(n.pi)")

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

67
3.1415

Perhatikan baris berikut pada kode di atas -

let pi = 3.1415

Di sini, variabel pi diinisialisasi sebagai nilai properti tersimpan dengan instance pi = 3,1415. Jadi, setiap kali instance direferensikan, itu akan memiliki nilai 3,1415 saja.

Metode lain untuk menyimpan properti adalah dengan memiliki struktur konstan. Jadi seluruh contoh struktur akan dianggap sebagai 'Properti Tersimpan dari Konstanta'.

struct Number {
   var digits: Int
   let numbers = 3.1415
}

var n = Number(digits: 12345)
n.digits = 67

print("\(n.digits)")
print("\(n.numbers)")
n.numbers = 8.7

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

error: cannot assign to 'numbers' in 'n'
n.numbers = 8.7

Alih-alih menginisialisasi ulang 'angka' menjadi 8,7 itu akan mengembalikan pesan kesalahan yang menunjukkan bahwa 'angka' dinyatakan sebagai konstan.

Properti Malas Tersimpan

Swift 4 menyediakan properti fleksibel yang disebut 'Lazy Stored Property' di mana ia tidak akan menghitung nilai awal saat variabel diinisialisasi untuk pertama kalinya. Pengubah 'lazy' digunakan sebelum deklarasi variabel untuk menjadikannya sebagai properti penyimpanan malas.

Properti Malas digunakan -

  • Untuk menunda pembuatan objek.
  • Ketika properti bergantung pada bagian lain dari kelas, itu belum diketahui
class sample {
   lazy var no = number()    // `var` declaration is required.
}

class number {
   var name = "Swift 4"
}

var firstsample = sample()
print(firstsample.no.name)

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

Swift 4

Variabel Instance

Di Objective C, properti Tersimpan juga memiliki variabel instan untuk tujuan cadangan untuk menyimpan nilai yang dideklarasikan dalam properti tersimpan.

Swift 4 mengintegrasikan kedua konsep ini ke dalam satu deklarasi 'properti tersimpan'. Alih-alih memiliki variabel instance yang sesuai dan nilai cadangan 'properti tersimpan' berisi semua informasi terintegrasi yang ditentukan di satu lokasi tentang properti variabel menurut nama variabel, tipe data, dan fungsi manajemen memori.

Properti Terhitung

Daripada menyimpan nilai, properti yang dihitung menyediakan pengambil dan penyetel opsional untuk mengambil dan mengatur properti dan nilai lain secara tidak langsung.

class sample {
   var no1 = 0.0, no2 = 0.0
   var length = 300.0, breadth = 150.0

   var middle: (Double, Double) {
      get {
         return (length / 2, breadth / 2)
      }
      
      set(axis){
         no1 = axis.0 - (length / 2)
         no2 = axis.1 - (breadth / 2)
      }
   }
}

var result = sample()
print(result.middle)
result.middle = (0.0, 10.0)

print(result.no1)
print(result.no2)

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

(150.0, 75.0)
-150.0
-65.0

Ketika properti yang dihitung meninggalkan nilai baru sebagai tidak terdefinisi, nilai default akan ditetapkan untuk variabel tertentu itu.

Properti Terhitung sebagai Properti Hanya-Baca

Properti hanya-baca dalam properti terhitung didefinisikan sebagai properti dengan pengambil tetapi tidak ada penyetel. Itu selalu digunakan untuk mengembalikan nilai. Variabel selanjutnya diakses melalui '.' Sintaks tetapi tidak dapat disetel ke nilai lain.

class film {
   var head = ""
   var duration = 0.0
   var metaInfo: [String:String] {
      return [
         "head": self.head,
         "duration":"\(self.duration)"
      ]
   }
}

var movie = film()
movie.head = "Swift 4 Properties"
movie.duration = 3.09

print(movie.metaInfo["head"]!)
print(movie.metaInfo["duration"]!)

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

Swift 4 Properties
3.09

Properti yang Dihitung sebagai Pengamat Properti

Di Swift 4 untuk mengamati dan menanggapi nilai properti, Pengamat Properti digunakan. Setiap saat ketika nilai properti disetel, pengamat properti dipanggil. Kecuali properti yang disimpan lambat, kita dapat menambahkan pengamat properti ke properti 'inherited' dengan metode 'overriding'.

Pengamat Properti dapat ditentukan oleh salah satunya

  • Sebelum Menyimpan nilai - kemauan

  • Setelah Menyimpan nilai baru - didset

  • Ketika sebuah properti disetel dalam sebuah penginisialisasi akan menyetel dan pengamat didset tidak bisa dipanggil.

class Samplepgm {
   var counter: Int = 0 {
      willSet(newTotal){
         print("Total Counter is: \(newTotal)")
      }
      
      didSet {
         if counter > oldValue {
            print("Newly Added Counter \(counter - oldValue)")
         }
      }
   }
}

let NewCounter = Samplepgm()
NewCounter.counter = 100
NewCounter.counter = 800

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

Total Counter is: 100
Newly Added Counter 100
Total Counter is: 800
Newly Added Counter 700

Variabel Lokal dan Global

Variabel lokal dan global dideklarasikan untuk menghitung dan mengamati properti.

Variabel LokalVariabel Global
Variabel yang ditentukan dalam fungsi, metode, atau konteks penutupan.Variabel yang ditentukan di luar fungsi, metode, penutupan, atau konteks jenis.
Digunakan untuk menyimpan dan mengambil nilai.Digunakan untuk menyimpan dan mengambil nilai.
Properti tersimpan digunakan untuk mendapatkan dan menyetel nilainya.Properti tersimpan digunakan untuk mendapatkan dan menyetel nilainya.
Properti yang dihitung juga digunakan.Properti yang dihitung juga digunakan.

Ketik Properti

Properti ditentukan di bagian Definisi tipe dengan tanda kurung kurawal {} dan cakupan variabel juga ditentukan sebelumnya. Untuk mendefinisikan properti tipe untuk tipe nilai kata kunci 'statis' digunakan dan untuk tipe kelas kata kunci 'kelas' digunakan.

Sintaksis

struct Structname {
   static var storedTypeProperty = " "
   static var computedTypeProperty: Int {
      // return an Int value here
   }
}

enum Enumname {
   static var storedTypeProperty = " "
   static var computedTypeProperty: Int {
      // return an Int value here
   }
}

class Classname {
   class var computedTypeProperty: Int {
      // return an Int value here
   }
}

Querying dan Setting Properties

Sama seperti properti instance, properti tipe dikueri dan disetel dengan '.' Sintaks hanya pada jenisnya saja, bukan menunjuk ke instance.

struct StudMarks {
   static let markCount = 97
   static var totalCount = 0
   
   var InternalMarks: Int = 0 {
      didSet {
         if InternalMarks > StudMarks.markCount {
            InternalMarks = StudMarks.markCount
         }
         if InternalMarks > StudMarks.totalCount {
            StudMarks.totalCount = InternalMarks
         }
      }
   }
}

var stud1Mark1 = StudMarks()
var stud1Mark2 = StudMarks()

stud1Mark1.InternalMarks = 98
print(stud1Mark1.InternalMarks)

stud1Mark2.InternalMarks = 87
print(stud1Mark2.InternalMarks)

Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -

97
87

Post a Comment for "Belajar Swift : Cara Menggunakan Properti di Swift"