0Pricing
Swift Academy · Pelajaran

Membangun mini-DSL dengan result builder

Bangun DSL kecil menggunakan @resultBuilder : definisikan fungsi builder, susun blok, serta dukung kondisional/perulangan untuk konstruksi yang mudah dibaca.

Membangun mini-DSL dengan result builder 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.

Mengapa pembangun hasil?

Tujuan: Mengubah blok yang mudah dibaca menjadi nilai menggunakan @resultBuilder. Anda menentukan cara berbagai item digabungkan; titik pemanggilan tetap bersih dan deklaratif.

Pembangun kecil

Kita mendeklarasikan buildBlock untuk menggabungkan item dan menyediakan API (lines{}) yang mengembalikan larik teks dari blok yang rapi.

@resultBuilder
struct StringListBuilder {
    static func buildBlock(_ parts: String...) -> [String] { parts }
    // Optional support for conditionals/arrays:
    static func buildEither(first: [String]) -> [String] { first }
    static func buildEither(second: [String]) -> [String] { second }
    static func buildArray(_ components: [[String]]) -> [String] { components.flatMap { $0 } }
}

// DSL entry function using the builder
func lines(@StringListBuilder _ content: () -> [String]) -> [String] {
    content()
}

// Usage: create an array of strings with a block
let list = lines {
    "Hello"
    "Swift"
    "Builders"
}
print(list)

Kondisional dalam pembangun

Dengan buildEither, if/else dapat digunakan di dalam blok. Pembangun menentukan cabang mana yang berkontribusi.

let showExtra = true
let conditional = lines {
    "Base"
    if showExtra {
        "Extra"
    } else {
        "Hidden"
    }
}
print(conditional)  // ["Base","Extra"]

Perulangan dalam pembangun

buildArray mengumpulkan hasil dari perulangan (for/map), sehingga bagian yang berulang dapat dihasilkan secara alami.

let items = ["a","b","c"]
let looped = lines {
    for x in items { x.uppercased() } // contributes ["A","B","C"]
}
print(looped)

Pembangun nilai tunggal

Pembangun dapat menghasilkan satu nilai. Di sini kita menggabungkan bagian-bagian menjadi satu teks, sambil tetap menggunakan kondisional.

@resultBuilder
struct TextBuilder {
    static func buildBlock(_ parts: String...) -> String {
        parts.joined(separator: " ")
    }
    static func buildEither(first: String) -> String { first }
    static func buildEither(second: String) -> String { second }
    static func buildArray(_ components: [String]) -> String {
        components.joined(separator: " ")
    }
}

func text(@TextBuilder _ content: () -> String) -> String { content() }

// Compose a small sentence with conditions
let loggedIn = false
let sentence = text {
    "[INFO]"
    "Welcome,"
    if loggedIn { "user!" } else { "guest." }
}
print(sentence) // "[INFO] Welcome, guest."

Kiat desain

Kiat:

  • Jaga DSL tetap minimal dan terfokus.
  • Sediakan satu fungsi titik masuk yang jelas dan diberi anotasi dengan pembangun Anda.
  • Dukung hanya yang Anda perlukan: buildBlock, buildEither, buildArray.
  • Dokumentasikan pernyataan yang diperbolehkan di dalam blok.

Tujuan pembangun hasil

Pemeriksaan singkat: Apa manfaat utama pembangun hasil?

Ringkasan

Ringkasan: Tentukan metode @resultBuilder untuk menggabungkan bagian-bagian, sediakan API titik masuk yang kecil, dan susun blok yang mudah dibaca dengan dukungan if/for.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membangun mini-DSL dengan result builder” gratis?

Ya — teks lengkap “Membangun mini-DSL dengan result builder” 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 “Membangun mini-DSL dengan result builder”?

Bangun DSL kecil menggunakan @resultBuilder : definisikan fungsi builder, susun blok, serta dukung kondisional/perulangan untuk konstruksi yang mudah dibaca. 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 “Membangun mini-DSL dengan result builder” 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. Membangun mini-DSL dengan result builder
  2. API tercakup dan pola keterbacaan
  3. Contoh praktis tanpa framework UI
← Kembali ke Swift Academy