0Pricing
Swift Academy · Pelajaran

Contoh praktis tanpa framework UI

Tulislah DSL kecil yang berguna tanpa UI: berkas konfigurasi, builder kueri sederhana, pembuat teks/Markdown, serta alur validasi dengan @resultBuilder .

Contoh praktis tanpa framework UI adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Pembangun hasil non-UI

Anda dapat membuat DSL yang berguna untuk banyak tugas di luar UI. Kita akan membuat pembangun config, kueri, teks, dan validation. Jaga masing-masing tetap kecil dan terfokus.

Pembangun config

Pembangun config mengumpulkan tuple sederhana ke dalam kamus. Titik pemanggilan menjadi rapi dan mudah dipindai.

@resultBuilder
struct ConfigBuilder {
    static func buildBlock(_ parts: (String,String)...) -> [String:String] {
        var dict: [String:String] = [:]
        for (k,v) in parts { dict[k] = v }
        return dict
    }
}
func config(@ConfigBuilder _ body: () -> [String:String]) -> [String:String] { body() }

// Use it:
let cfg = config {
    ("ENV", "debug")
    ("API_URL", "https://api.example.com")
    ("RETRY", "3")
}
print(cfg["API_URL"] ?? "missing")

Pembangun kueri

Pembangun kueri menggabungkan klausa dengan AND. Kita mendukung if/else dan perulangan melalui pengait pembangun.

struct Where { let clauses: [String] }
@resultBuilder
struct WhereBuilder {
    static func buildBlock(_ parts: String...) -> Where { Where(clauses: parts) }
    static func buildArray(_ parts: [String]) -> Where { Where(clauses: parts) }
    static func buildEither(first: Where) -> Where { first }
    static func buildEither(second: Where) -> Where { second }
}
func whereClauses(@WhereBuilder _ body: () -> Where) -> Where { body() }

func select(_ table: String, where w: Where) -> String {
    let filter = w.clauses.isEmpty ? "" : " WHERE " + w.clauses.joined(separator: " AND ")
    return "SELECT * FROM \(table)\(filter);"
}

// Use:
let isProd = false
let q = select("users", where: whereClauses {
    "age > 18"
    if isProd { "status = 'active'" } else { "status <> 'deleted'" }
})
print(q)

Pembangun Teks/Markdown

Pembangun teks menghasilkan satu String. Pembantu seperti h2 dan bullet membuat blok tetap mudah dibaca.

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

func h2(_ s: String) -> String { "## " + s }
func bullet(_ s: String) -> String { "- " + s }

let doc = md {
    h2("Release Notes")
    bullet("Faster build")
    bullet("Smaller binary")
}
print(doc)

Pembangun validasi

Kumpulkan validation rules, lalu jalankan semuanya sebagai alur pemrosesan. Blok tetap deklaratif; eksekusi dilakukan nanti.

struct ValidationResult { let ok: Bool; let messages: [String] }

typealias Rule = (String) -> String?   // nil = OK; otherwise error message

@resultBuilder
struct RulesBuilder {
    static func buildBlock(_ parts: Rule...) -> [Rule] { parts }
    static func buildArray(_ parts: [[Rule]]) -> [Rule] { parts.flatMap { $0 } }
}
func rules(@RulesBuilder _ body: () -> [Rule]) -> [Rule] { body() }

func validate(_ input: String, with rules: [Rule]) -> ValidationResult {
    var msgs: [String] = []
    for r in rules { if let m = r(input) { msgs.append(m) } }
    return ValidationResult(ok: msgs.isEmpty, messages: msgs)
}

// Use:
let rs = rules {
    { $0.isEmpty ? "Must not be empty" : nil }
    { $0.count < 3 ? "Too short" : nil }
}
let out = validate("hi", with: rs)
print(out.ok, out.messages)

Kiat desain

Kiat:

  • Mulai dengan buildBlock; tambahkan cabang/larik hanya jika diperlukan.
  • Jaga tipe yang dihasilkan tetap sederhana: String, larik, struktur kecil.
  • Sediakan satu fungsi titik masuk untuk setiap DSL (misalnya, config, md).
  • Dokumentasikan pernyataan yang diperbolehkan dan aturan pelolosan.

Kasus penggunaan pembangun non-UI

Pemeriksaan singkat: Pilih penggunaan non-UI yang tepat untuk pembangun:

Ringkasan

Ringkasan: Pembangun hasil sangat cocok untuk masukan terstruktur—config, kueri, teks, dan validation. Jaga agar tetap minimal, mudah dibaca, dan memiliki cakupan yang jelas.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Contoh praktis tanpa framework UI” gratis?

Ya — teks lengkap “Contoh praktis tanpa framework UI” 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 “Contoh praktis tanpa framework UI”?

Tulislah DSL kecil yang berguna tanpa UI: berkas konfigurasi, builder kueri sederhana, pembuat teks/Markdown, serta alur validasi dengan @resultBuilder . 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 3.

Berapa lama pelajaran “Contoh praktis tanpa framework UI” 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