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.