Struct berbanding Class, sifat dan init
Bandingkan semantik nilai dengan rujukan; gunakan sifat tersimpan dan terhitung, pemerhati sifat, penginisialisasi, serta deinit class.
Struct berbanding Class, sifat dan init ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 3. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 3 pelajaran.
Gambaran keseluruhan
Swift mempunyai dua jenis gubahan utama: struct (nilai) dan class (rujukan).
- Struktur disalin apabila ditetapkan
- Kelas berkongsi rujukan
Nilai berbanding rujukan
Struktur menyalin nilai; kelas berkongsi rujukan. Perubahan pada b tidak menjejaskan a, tetapi perubahan pada d menjejaskan c.
struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }
var a = Point(x: 1, y: 1)
var b = a // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9
let c = CPoint(); c.x = 1
let d = c // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9Sifat
Sifat tersimpan menyimpan data; sifat terhitung menghasilkan nilai apabila diakses.
struct Rectangle {
var width: Double // stored
var height: Double // stored
var area: Double { // computed
return width * height
}
}
let r = Rectangle(width: 3, height: 4)
print(r.area) // 12Pemerhati
Gunakan willSet/didSet untuk memerhati perubahan pada sifat tersimpan.
struct Counter {
var value: Int = 0 {
willSet { print("will set to", newValue) }
didSet { print("did set from", oldValue) }
}
}
var cnt = Counter()
cnt.value = 5Pemula
Struktur mendapat pemula mengikut ahli. Kelas mentakrifkan init (ditetapkan) dan boleh menambahkan pemula kemudahan.
struct User {
var name: String
// memberwise init is synthesized: User(name:)
}
class Person {
var name: String
init(name: String) { // designated
self.name = name
}
convenience init() { // convenience
self.init(name: "Guest")
}
}
let u = User(name: "Ada")
let p = Person()
print(u.name, p.name)deinit
Hanya kelas mempunyai deinit, yang dipanggil apabila tika dinyahperuntukkan (ARC).
class Temp {
let id: Int
init(id: Int) { self.id = id }
deinit { print("Temp \\(id) deinit") }
}
do {
let t = Temp(id: 1)
print("using", t.id)
} // t goes out of scope and deinit may runSoalan struktur berbanding kelas
Semakan pantas: Pernyataan manakah yang membandingkan struktur dan kelas dengan betul?
Imbas kembali
Imbas kembali: Utamakan struct untuk data ringkas (semantik nilai). Gunakan class untuk identiti dikongsi, pewarisan dan deinit. Tambahkan sifat tersimpan atau terhitung, pemerhati dan pemula yang sesuai.
Pelajari Swift dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Soalan Lazim
Adakah pelajaran “Struct berbanding Class, sifat dan init” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Struct berbanding Class, sifat dan init”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 3 pelajaran.
Apakah yang akan saya pelajari dalam “Struct berbanding Class, sifat dan init”?
Bandingkan semantik nilai dengan rujukan; gunakan sifat tersimpan dan terhitung, pemerhati sifat, penginisialisasi, serta deinit class. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 3.
Berapa lamakah pelajaran “Struct berbanding Class, sifat dan init” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Struct berbanding Class, sifat dan init
- Sifat tersimpan berbanding terhitung, pemerhati
- Penginisialisasi dan deinit (class)