Computed Property dalam Swift


Apakah kita harus selalu membuat fungsi untuk menghitung sesuatu?
Kita akan menemukan jawabannya setelah ini. Kamu akan belajar cara membuat hubungan antar variabel. Kamu tidak lagi harus mengelola dua atau lebih variabel secara terpisah. Kamu mungkin pernah melihat get and set diproject Kamu. Jika belum, jangan khawatir. Itulah tujuan dari artikel ini.

Kode yang mengerikan

Fungsi yang tidak terkait yang mengambil banyak baris. Fungsi di bawah ini digunakan untuk menghitung radius dan diameter.

func getDiameter(radius: Double) -> Double {
 return radius * 2
}
func getRadius(diameter: Double) -> Double {
 return diameter / 2
}

getDiameter(radius: 10) // return 20
getRadius(diameter: 200) // return 100
getRadius(diameter: 600) // return 300

Kedua fungsi di atas terpisah dan tidak ada hubungan. Computed Property akan membantu Kamu memecahkan masalah tersebut.

Properti Gettable

Kamu dapat membuat variabel yang hanya bisa dibaca. Ini juga disebut sebagai properti gettable.

class NumberClass {
  var readableNumber: Double {
    get {
      // your logic
      return 777
    }
  }
  var readableNumbers: Double {
    return 789
  }
}

Jika Kamu mencoba untuk memodifikasi value propertinya, Editor akan memberikan pesan error.

let numberClass = NumberClass()
numberClass.readableNumber = 10 // Cannot assign to property: 'readableNumber' is a get-only property
numberClass.readableNumbers = 20 // Cannot assign to property: 'readableNumbers' is a get-only property

Properti Gettable dan Settable

Kamu mungkin tidak hanya membuat properti gettable, tetapi juga settable dengan memasukkan set setelah get. Baiklah sekarang kita akan membuat hubungan antara radius dan diameter.

var radius: Double = 10
var diameter: Double {
  get {
    return radius * 2
  }
  set {
    radius = newValue / 2
  }  
}

newValue me-refer ke nilai yang baru ditetapkan dari diameter. Contohnya ketika Kamu set diameter menjadi 100, newValue juga menjadi 100.

diameter = 50
radius = 100
diameter // 200

Sebenarnya Kamu dapat merubah newValue dengan nama yang berbeda. Dalam contoh di bawah ini, ada hubungan antara area dan side. Seperti halnya memanggil newValue, kita akan menggantinya dengan newArea.

import Foundation

var side: Double = 100
var area: Double {
 get {
   return side * side
 }
 set(newArea) {
   side = sqrt(newArea) // sqrt: akar pangkat 2
 }
}

area = 1000
side // 31.62277660168379

Dalam prakteknya Computed Property berguna untuk:

  • Mengambil dan menyimpan data dari server
  • Memperluas hubungan antar properti
  • Mencegah orang lain memanipulasi kode Kamu

Semoga bermanfaat.

0 0 votes
Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

0
Would love your thoughts, please comment.x
()
x