Praxisbeispiele ohne UI-Frameworks
Schreiben Sie kleine, nützliche DSLs ohne UI: Konfigurationsdateien, einfache Query Builder, Text-/Markdown-Emitter und Validierungspipelines mit @resultBuilder .
Praxisbeispiele ohne UI-Frameworks ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Result Builder außerhalb der UI
Sie können praktische DSLs für viele Aufgaben außerhalb der UI erstellen. Wir entwickeln Builder für Konfiguration, Abfragen, Text und Validierung. Halten Sie jeden davon klein und zielgerichtet.
Konfigurations-Builder
Ein Konfigurations-Builder sammelt einfache Tupel in einem Dictionary. Die Aufrufstellen sind übersichtlich und lassen sich leicht erfassen.
@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")Abfrage-Builder
Ein Abfrage-Builder verbindet Klauseln mit AND. Über Builder-Hooks unterstützen wir if/else und Schleifen.
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)Text-/Markdown-Builder
Ein Text-Builder gibt einen einzelnen String aus. Helfer wie h2 und bullet sorgen für einen übersichtlichen Block.
@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)Validierungs-Builder
Sammeln Sie Validierungsregeln und führen Sie sie anschließend als Pipeline aus. Der Block bleibt deklarativ; die Ausführung erfolgt später.
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)Gestaltungstipps
Tipps:
- Beginnen Sie mit buildBlock; fügen Sie either/array nur bei Bedarf hinzu.
- Halten Sie die ausgegebenen Typen einfach: String, Arrays, kleine Structs.
- Stellen Sie pro DSL eine Einstiegfunktion bereit (z. B. config, md).
- Dokumentieren Sie erlaubte Anweisungen und Regeln für das Escaping.
Einsatz eines Builders außerhalb der UI
Kurztest: Wählen Sie einen sinnvollen Einsatz eines Builders außerhalb der UI:
Zusammenfassung
Zusammenfassung: Result Builder eignen sich besonders für strukturierte Eingaben – Konfigurationen, Abfragen, Text und Validierung. Halten Sie sie minimal, lesbar und klar eingegrenzt.
Häufig gestellte Fragen
Ist die Lektion „Praxisbeispiele ohne UI-Frameworks“ kostenlos?
Ja — der vollständige Text von „Praxisbeispiele ohne UI-Frameworks“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Praxisbeispiele ohne UI-Frameworks“?
Schreiben Sie kleine, nützliche DSLs ohne UI: Konfigurationsdateien, einfache Query Builder, Text-/Markdown-Emitter und Validierungspipelines mit @resultBuilder . Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Praxisbeispiele ohne UI-Frameworks“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Mini-DSLs mit Result Builders erstellen
- Scoped APIs und Muster für bessere Lesbarkeit
- Praxisbeispiele ohne UI-Frameworks