Saya belajar Swift dan saya membaca The Swift Programming Language
dari Apple, saya tidak memiliki latar belakang Objective C (hanya PHP, JS, dan lainnya tetapi tidak ada Obj C)
Pada halaman 24-25 saya melihat kode ini:
//...Class definition stuff...
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
//...Class continues...
Bagian ini TIDAK ditentukan dalam buku dan saya tidak mengerti untuk apa itu.
Adakah yang bisa menjelaskan kepada saya apa yang mendapatkan dan mengatur ?
Jawaban:
Itu sebenarnya dijelaskan tepat sebelum kode:
Ketika beberapa kelas lain ingin mendapatkan variabel perimeter itu, mereka melakukan ini:
... Yang menyebutnya:
Dan dengan demikian pada dasarnya seperti jika pengontrol pemanggil melakukan ini:
Saat Anda menyetel variabel dari objek lain, akan terlihat seperti ini:
Yang memanggil kode di
set{}
blok:Dan jadi seperti jika kelas yang mengatur variabel telah melakukan ini:
Ini benar-benar hanya untuk kenyamanan - Anda dapat memanggil ini dari kode lain tanpa harus selalu membagi atau mengalikan dengan 3, karena itu dilakukan tepat sebelum menetapkan variabel dan tepat sebelum Anda mendapatkan variabel.
Di Swift, kita bisa memiliki properti yang dihitung saat didapat dan bisa melakukan sesuatu saat disetel. Kita juga bisa melakukan ini di Objective-C:
sumber
Pengambilan dan pengaturan variabel dalam kelas mengacu pada pengambilan ("mendapatkan") atau mengubah ("pengaturan") isinya.
Pertimbangkan variabel
members
kelasfamily
. Secara alami, variabel ini harus berupa bilangan bulat, karena sebuah keluarga tidak pernah bisa terdiri dari dua titik sesuatu orang.Jadi Anda mungkin akan melanjutkan dengan mendefinisikan
members
variabel seperti ini:Ini, bagaimanapun, akan memberi orang yang menggunakan kelas ini kemungkinan untuk mengatur jumlah anggota keluarga menjadi sekitar 0 atau 1. Dan karena tidak ada yang namanya keluarga 1 atau 0, ini sangat disayangkan.
Di sinilah pengambil dan penyetel masuk. Dengan cara ini Anda dapat memutuskan sendiri bagaimana variabel dapat diubah dan nilai apa yang dapat mereka terima, serta memutuskan konten apa yang mereka kembalikan.
Kembali ke kelas keluarga kita, mari pastikan tidak ada yang dapat menyetel
members
nilainya menjadi kurang dari 2:Sekarang kita dapat mengakses
members
variabel seperti sebelumnya, dengan mengetikinstanceOfFamily.members
, dan berkat fungsi setter, kami juga dapat menetapkan nilai itu seperti sebelumnya, dengan mengetik, misalnya:instanceOfFamily.members = 3
. Apa yang berubah, bagaimanapun, adalah kenyataan bahwa kita tidak dapat mengatur variabel ini menjadi lebih kecil dari 2 lagi.Perhatikan pengenalan
_members
variabel, yang merupakan variabel aktual untuk menyimpan nilai yang kita tetapkan melaluimembers
fungsi penyetel. Yang aslimembers
sekarang telah menjadi properti yang dihitung, artinya itu hanya bertindak sebagai antarmuka untuk menangani variabel aktual kita.sumber
members
==>count
,numberOfMembers
;var members : Set<Person>
??set (newVal) { ... }
, newVal tersirat, begituset { _members = newVal }
juga benar._members
harus bersifat pribadi, jika tidak, perintahinstanceOfFamily._members=1
akan disetelinstanceOfFamily.members
ke nilai di bawah 2newValue
di Swift 4 - docs.swift.org/swift-book/LanguageGuide/Properties.html#ID260Pertanyaan sederhana harus diikuti dengan jawaban yang singkat, sederhana dan jelas.
Saat kita mendapatkan nilai properti, ia menjalankan
get{}
bagiannya.Saat kita menetapkan nilai ke properti, ia mengaktifkan
set{}
bagiannya.PS. Saat menyetel nilai ke properti, SWIFT secara otomatis membuat konstanta bernama "newValue" = nilai yang kami tetapkan. Setelah konstanta "newValue" dapat diakses di bagian properti
set{}
.Contoh:
sumber
Anda harus melihat Properti Terhitung
Dalam contoh kode Anda,
perimeter
adalah properti yang tidak dicadangkan oleh variabel kelas, sebagai gantinya nilainya dihitung menggunakanget
metode dan disimpan melaluiset
metode - biasanya disebut sebagai pengambil dan penyetel .Saat Anda menggunakan properti seperti ini:
Anda memanggil kode yang terdapat dalam
get
blok kode, dan ketika Anda menggunakannya seperti ini:Anda memanggil kode yang terdapat dalam
set
blok kode, di mananewValue
secara otomatis diisi dengan nilai yang diberikan di sebelah kanan operator penugasan.Properti yang dihitung bisa menjadi readwrite jika getter dan setter ditentukan, atau readonly jika getter saja yang ditentukan.
sumber
variabel mendeklarasikan dan memanggil seperti ini di kelas
sekarang Anda ingin memprogram untuk membuat nilai default x lebih dari atau sama dengan 3. Sekarang ambil kasus hipotetis jika x kurang dari 3, program Anda akan gagal. jadi, Anda ingin orang-orang memasukkan 3 atau lebih dari 3. Swift membuatnya mudah bagi Anda dan penting untuk memahami cara mengencangkan nilai variabel ini karena mereka akan banyak digunakan dalam pengembangan iOS. Sekarang mari kita lihat bagaimana get dan set akan digunakan di sini.
jika Anda masih ragu, ingat saja, penggunaan get dan set adalah untuk memperbarui variabel apa pun seperti yang kita inginkan. get dan set akan memberi Anda kendali yang lebih baik untuk mengatur logika Anda. Alat yang kuat karenanya tidak mudah dimengerti.
sumber