Swift Academy · Pelajaran

Merancang API untuk Semantik Nilai

Memilih struct atau class saat merancang interface publik dan framework.

Pelajaran 4 dari 412 langkah

Merancang API untuk Semantik Nilai 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

Merancang API berdasarkan semantik nilai menghasilkan kode yang dapat diprediksi, aman untuk utas, dan mudah diuji. Mari kita telaah prinsip dan pola untuk menentukan pilihan tersebut.

Kontrak Semantik Nilai

Sebuah tipe memiliki semantik nilai jika: • Dua salinan independen akan selalu tetap independen • Mengubah satu salinan tidak pernah memengaruhi salinan lainnya • Tipe tersebut berperilaku seperti `Int`—`a = b; a += 1` membuat `b` tetap tidak berubah

API Publik: Utamakan Tipe Pengembalian Berbasis Nilai

```swift // Reference semantics — caller shares state: func getUser() -> UserClass { ... } // Value semantics — caller gets independent copy: func getUser() -> UserStruct { ... } ``` Tipe pengembalian berbasis nilai melindungi status internal dari perubahan oleh pihak luar.

Tipe Referensi yang Tidak Dapat Diubah

Ketika sebuah kelas selalu tidak dapat diubah, perilakunya menyerupai nilai: ```swift final class Token { let value: String init(_ v: String) { value = v } // No mutable state — safe to share freely } ```

Daftar Periksa Memilih Struktur daripada Kelas

Utamakan struktur jika: ✓ Tipe tersebut memodelkan data, bukan identitas ✓ Tidak memerlukan pewarisan ✓ Instans tidak seharusnya dibagikan atau berbagi referensi ✓ Dapat dibandingkan dengan membandingkan nilai bidang ✓ Bekerja baik dengan Swift Concurrency (Sendable)

Sendable dan Semantik Nilai

Swift 6 Concurrency mengharuskan tipe yang melintasi batas aktor menjadi `Sendable`: ```swift struct Message: Sendable { var text: String; var timestamp: Date } // Safe to pass between actors ``` Tipe nilai dengan semua properti yang mendukung Sendable secara otomatis menjadi `Sendable`.

Membuat API Kelas Aman bagi Nilai

```swift struct Config { // Expose value snapshot instead of the class: func snapshot() -> Config { self } // copy by value semantics } // Or use a value-type DTO: struct UserDTO: Sendable { var id: UUID; var name: String } ```

Pola Pembuat dengan Tipe Nilai

```swift struct Request { var url: URL var method: String = "GET" var headers: [String:String] = [:] func adding(header: String, value: String) -> Request { var copy = self copy.headers[header] = value return copy } } let r = Request(url: url).adding(header: "Auth", value: "Bearer x") ```

Sinyal dalam Dokumentasi API

Memilih struktur daripada kelas memberi sinyal yang jelas kepada pengguna API: • "Ini adalah data—silakan salin dengan bebas" • "Mengubah salinan Anda tidak akan memengaruhi salinan saya" • "Data ini aman diteruskan antar-utas" Hal ini mengurangi kebutuhan akan penyalinan defensif dalam kode pengguna.

Kapan Menerima Semantik Referensi

Terima semantik kelas/referensi jika: • Identitas penting (`===`): dua objek `User` dapat mewakili orang yang sama • Status berubah bersama adalah fiturnya: `Database`, `Cache`, `AudioEngine` • Interoperabilitas ObjC: tipe UIKit dan AppKit adalah kelas • Panggilan balik siklus hidup: `deinit` untuk pembersihan sumber daya

Pemeriksaan Singkat

Kata kunci Swift apa yang menandai tipe agar aman diteruskan melintasi batas aktor dalam Swift Concurrency?

Ringkasan

Hal-hal penting: • Semantik nilai: perubahan bersifat lokal, tanpa berbagi referensi • Utamakan struktur untuk model data; gunakan kelas untuk identitas/siklus hidup • Kelas yang tidak dapat diubah berperilaku seperti tipe nilai • `Sendable` + tipe nilai = konkurensi yang aman • Pola Pembuat dengan salinan struktur menghasilkan API yang bersih dan tidak dapat diubah Kursus selesai! Berikutnya: pola ARC dan pengelolaan memori.
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 “Merancang API untuk Semantik Nilai” gratis?

Ya — teks lengkap “Merancang API untuk Semantik Nilai” 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 “Merancang API untuk Semantik Nilai”?

Memilih struct atau class saat merancang interface publik dan framework. 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 “Merancang API untuk Semantik Nilai” 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. Stack vs Heap: Tempat Nilai Disimpan
  2. Mutasi, Berbagi, dan Aliasing Tak Terduga
  3. Graf Nilai/Referensi Campuran
  4. Merancang API untuk Semantik Nilai
← Kembali ke Swift Academy