Swift Academy · Pelajaran

Enum Indirect dan Struktur Rekursif

Membangun linked list dan pohon dengan case enum indirect.

Pelajaran 3 dari 412 langkah

Enum Indirect dan Struktur Rekursif adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 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

Kasus enumerasi `indirect` menyimpan nilai terkaitnya di balik sebuah penunjuk, sehingga memungkinkan struktur data rekursif seperti daftar berantai, pohon, dan pohon ekspresi.

Mengapa indirect Diperlukan

Tanpa `indirect`, enumerasi yang merujuk pada dirinya sendiri akan memiliki ukuran tak terhingga: ```swift enum List { case empty case node(T, List) // ❌ recursive without size bound } ``` `indirect` menambahkan alokasi memori dinamis sehingga ukurannya hanya sebesar sebuah penunjuk.

Mendefinisikan Enumerasi indirect

```swift indirect enum List { case empty case node(T, List) } let list = List.node(1, .node(2, .node(3, .empty))) // [1, 2, 3] ```

Contoh Pohon Biner

```swift indirect enum Tree { case leaf case branch(left: Tree, value: T, right: Tree) } let t = Tree.branch(left: .leaf, value: 5, right: .branch(left:.leaf, value:10, right:.leaf)) ```

Fungsi Rekursif pada Enumerasi indirect

```swift func sum(_ list: List) -> Int { switch list { case .empty: return 0 case .node(let value, let rest): return value + sum(rest) } } print(sum(list)) // 6 ```

Tinggi Pohon

```swift func height(_ tree: Tree) -> Int { switch tree { case .leaf: return 0 case .branch(let l, _, let r): return 1 + max(height(l), height(r)) } } ```

Pohon Ekspresi

```swift indirect enum Expr { case num(Double) case add(Expr, Expr) case mul(Expr, Expr) } func eval(_ e: Expr) -> Double { switch e { case .num(let n): return n case .add(let a, let b): return eval(a) + eval(b) case .mul(let a, let b): return eval(a) * eval(b) } } print(eval(.mul(.num(2), .add(.num(3), .num(4))))) // 14 ```

indirect per Kasus

Anda dapat menandai hanya kasus rekursif dengan `indirect`, bukan seluruh enumerasi: ```swift enum Tree { case leaf indirect case branch(left: Tree, value: T, right: Tree) } ``` Cara ini lebih tepat—hanya kasus rekursif yang memerlukan alokasi memori dinamis.

Pertimbangan Performa

Kasus `indirect` dialokasikan di memori dinamis. Untuk struktur rekursif yang sangat mementingkan performa, pertimbangkan penggunaan class atau representasi berbasis array sebagai gantinya.

Kapan Menggunakan Enumerasi indirect

Kasus penggunaan yang baik: • Daftar berantai dan struktur data fungsional • Pohon Sintaks Abstrak (pengurai, kalkulator) • Hierarki sistem berkas • Representasi pohon JSON/XML Hindari penggunaannya ketika representasi berbasis array datar lebih efisien untuk cache.

Pemeriksaan Singkat

Apa yang ditambahkan `indirect` ke sebuah kasus enumerasi?

Rangkuman

Hal-hal penting: • `indirect enum` atau `indirect case` memungkinkan tipe rekursif • Diperlukan karena tipe nilai rekursif akan memiliki ukuran tak terhingga • Gunakan untuk daftar berantai, pohon, dan AST • Telusuri dengan fungsi rekursif dan switch • `indirect` per kasus lebih tepat daripada `indirect` untuk seluruh enumerasi Berikutnya: memodelkan mesin status dengan enumerasi.
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 “Enum Indirect dan Struktur Rekursif” gratis?

Ya — teks lengkap “Enum Indirect dan Struktur Rekursif” 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 “Enum Indirect dan Struktur Rekursif”?

Membangun linked list dan pohon dengan case enum indirect. 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 3 dari 4.

Berapa lama pelajaran “Enum Indirect dan Struktur Rekursif” 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. Nilai Mentah dan CaseIterable
  2. Nilai Terkait untuk Data yang Kaya
  3. Enum Indirect dan Struktur Rekursif
  4. Memodelkan Mesin Keadaan dengan Enum
← Kembali ke Swift Academy