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 300Kedua 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.62277660168379Dalam prakteknya Computed Property berguna untuk:
- Mengambil dan menyimpan data dari server
- Memperluas hubungan antar properti
- Mencegah orang lain memanipulasi kode Kamu
Semoga bermanfaat.
