0Pricing
Swift Academy · Pelajaran

Struct vs Class, properti & init

Bandingkan semantik nilai dan referensi; gunakan properti tersimpan dan terhitung, observer properti, initializer, serta deinit pada kelas.

Struct vs Class, properti & init adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 3 pelajaran total.

Ikhtisar

Swift memiliki dua tipe gabungan utama: struct (nilai) dan kelas (referensi).

  • Struktur disalin saat penetapan
  • Kelas berbagi referensi

Nilai dibandingkan dengan referensi

Struktur menyalin nilai; kelas berbagi referensi. Mengubah b tidak memengaruhi a, tetapi d memengaruhi 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, 9

Properti

Properti tersimpan menyimpan data; properti terhitung menghasilkan nilai saat 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)  // 12

Pengamat

Gunakan willSet/didSet untuk mengamati perubahan pada properti tersimpan.

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5

Penginisialisasi

Struktur mendapatkan penginisialisasi berdasarkan anggota. Kelas mendefinisikan init (yang ditentukan) dan dapat menambahkan penginisialisasi convenience.

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 yang memiliki deinit, yang dipanggil saat instans dibatalkan alokasinya (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 run

Pertanyaan tentang struct dan kelas

Pemeriksaan cepat: Pernyataan mana yang dengan tepat membandingkan struktur dan kelas?

Ringkasan

Ringkasan: Utamakan struct untuk data sederhana (semantik nilai). Gunakan class untuk identitas bersama, pewarisan, dan deinit. Tambahkan properti tersimpan/terhitung, pengamat, dan penginisialisasi yang sesuai.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Struct vs Class, properti & init” gratis?

Ya — teks lengkap “Struct vs Class, properti & init” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Struct vs Class, properti & init”?

Bandingkan semantik nilai dan referensi; gunakan properti tersimpan dan terhitung, observer properti, initializer, serta deinit pada kelas. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “Struct vs Class, properti & init” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Struct vs Class, properti & init
  2. Properti tersimpan vs terhitung, observer
  3. Initializer & deinit (kelas)
← Kembali ke Swift Academy