Swift Academy · Pelajaran

Metode Mutasi dan Semantik Salin saat Tulis

Memahami alasan mutating diperlukan dan cara kerja optimasi COW Swift.

Pelajaran 4 dari 412 langkah

Metode Mutasi dan Semantik Salin saat Tulis adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. 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 4 pelajaran total.

Selamat Datang

Metode struktur yang mengubah properti tersimpan harus ditandai `mutating`. Swift juga menggunakan Salin saat Penulisan (COW) agar semantik nilai tetap efisien.

Kata Kunci Mutasi

```swift struct Counter { var count = 0 mutating func increment() { count += 1 } mutating func reset() { count = 0 } } var c = Counter() c.increment() // count = 1 ``` Tanpa `mutating`, kompilator menolak metode yang mengubah `self`.

Mengapa Mutasi Diperlukan

Struktur adalah tipe nilai. Saat Anda meneruskan struktur, Anda meneruskan salinannya. Kompilator memerlukan `mutating` untuk mengetahui bahwa suatu metode akan mengubah nilai asli: ```swift let c = Counter() c.increment() // ❌ cannot use mutating on let ```

Menetapkan Ulang Diri dalam Mutasi

Metode `mutating` dapat menggantikan `self` sepenuhnya: ```swift struct Toggle { var isOn: Bool mutating func flip() { self = Toggle(isOn: !isOn) } } ```

Semantik Nilai: Perilaku Penyalinan

```swift var a = Counter() var b = a // b is an independent copy a.increment() print(a.count) // 1 print(b.count) // 0 — unaffected ``` Menetapkan struktur akan menyalin semua properti tersimpannya.

Salin saat Penulisan (COW)

Koleksi bawaan Swift, seperti larik, kamus, himpunan, dan teks, menggunakan COW: ```swift var a = [1,2,3] var b = a // no copy yet — shared storage b.append(4) // NOW a copy is made — a is unchanged print(a) // [1,2,3] print(b) // [1,2,3,4] ```

Mengapa COW Penting

Tanpa COW, setiap penetapan struktur akan menyalin semua isi secara mendalam. COW membuat penyalinan menjadi murah, cukup dengan menambah jumlah referensi, hingga mutasi memicu penyalinan sebenarnya. Hal ini membuat tipe nilai secepat tipe referensi dalam sebagian besar situasi.

Mengimplementasikan COW Kustom

```swift struct Buffer { private var storage: NSMutableData private mutating func ensureUnique() { if !isKnownUniquelyReferenced(&storage) { storage = storage.mutableCopy() as! NSMutableData } } mutating func append(_ byte: UInt8) { ensureUnique() // safe to mutate storage now } } ```

Mutasi dan Protokol

Metode protokol yang memutasi harus ditandai `mutating` di dalam protokol: ```swift protocol Resettable { mutating func reset() } struct Counter: Resettable { var count = 0 mutating func reset() { count = 0 } } ``` Kelas yang menerapkan protokol tidak memerlukan `mutating` karena kelas adalah tipe referensi.

Struktur Konstan Sepenuhnya Tidak Dapat Diubah

```swift let pt = Point(x: 1, y: 2) pt.x = 3 // ❌ even though x is var inside Point ``` Saat struktur disimpan dalam `let`, tidak satu pun properti tersimpannya dapat dimutasi.

Pemeriksaan Cepat

Kapan Swift benar-benar melakukan penyalinan Copy-on-Write?

Ringkasan

Hal-hal penting: • `mutating` menandai metode yang mengubah properti struktur • Anda tidak dapat memanggil metode `mutating` pada struktur `let` • Penetapan menyalin struktur; COW membuatnya murah untuk koleksi • COW hanya memicu penyalinan sebenarnya saat mutasi pertama • Terapkan COW kustom dengan `isKnownUniquelyReferenced` Kursus selesai! Berikutnya: pewarisan kelas.
Gratis untuk memulai

Belajar Swift dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
122
Pelajaran
409

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Metode Mutasi dan Semantik Salin saat Tulis” gratis?

Ya — teks lengkap “Metode Mutasi dan Semantik Salin saat Tulis” 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 4 pelajaran total.

Apa yang akan aku pelajari di “Metode Mutasi dan Semantik Salin saat Tulis”?

Memahami alasan mutating diperlukan dan cara kerja optimasi COW Swift. 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 4 dari 4.

Berapa lama pelajaran “Metode Mutasi dan Semantik Salin saat Tulis” 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. Inisialisasi Memberwise dan Inisialisasi Kustom
  2. Properti Tersimpan dan Pengamat Properti
  3. Properti Terhitung dalam Struct
  4. Metode Mutasi dan Semantik Salin saat Tulis
← Kembali ke Swift Academy