Mini-DSLs mit Result Builders erstellen
Erstellen Sie mit @resultBuilder eine kleine DSL: Definieren Sie Builder-Funktionen, setzen Sie Blöcke zusammen und unterstützen Sie Bedingungen/Schleifen für eine gut lesbare Konstruktion.
Mini-DSLs mit Result Builders erstellen ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.
Warum Result Builder?
Ziel: Lesbare Blöcke mithilfe von @resultBuilder in Werte umwandeln. Sie definieren, wie Elemente kombiniert werden; die Aufrufstelle bleibt übersichtlich und deklarativ.
Ein kleiner Builder
Wir deklarieren buildBlock, um Elemente zu verbinden, und stellen eine API (lines{}) bereit, die aus einem übersichtlichen Block ein Array von Strings zurückgibt.
@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)Bedingungen in Buildern
Mit buildEither funktionieren if/else-Anweisungen innerhalb des Blocks. Der Builder entscheidet, welcher Zweig beiträgt.
let showExtra = true
let conditional = lines {
"Base"
if showExtra {
"Extra"
} else {
"Hidden"
}
}
print(conditional) // ["Base","Extra"]Schleifen in Buildern
buildArray sammelt Ergebnisse aus Schleifen (for/map), sodass wiederholte Teile auf natürliche Weise ausgegeben werden können.
let items = ["a","b","c"]
let looped = lines {
for x in items { x.uppercased() } // contributes ["A","B","C"]
}
print(looped)Builder mit einem einzelnen Wert
Builder können einen einzelnen Wert ausgeben. Hier verbinden wir Teile zu einem String und verwenden weiterhin Bedingungen.
@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."Gestaltungstipps
Tipps:
- Halten Sie DSLs minimal und zielgerichtet.
- Stellen Sie eine klare Einstiegfunktion bereit, die mit Ihrem Builder annotiert ist.
- Unterstützen Sie nur, was Sie benötigen:
buildBlock,buildEither,buildArray. - Dokumentieren Sie, welche Anweisungen innerhalb des Blocks erlaubt sind.
Zweck eines Result Builders
Kurztest: Was ist der wichtigste Vorteil eines Result Builders?
Zusammenfassung
Zusammenfassung: Definieren Sie @resultBuilder-Methoden, um Teile zu kombinieren, stellen Sie eine kleine Einstiegs-API bereit und setzen Sie lesbare Blöcke mit Unterstützung für if/for zusammen.
Häufig gestellte Fragen
Ist die Lektion „Mini-DSLs mit Result Builders erstellen“ kostenlos?
Ja — der vollständige Text von „Mini-DSLs mit Result Builders erstellen“ 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 „Mini-DSLs mit Result Builders erstellen“?
Erstellen Sie mit @resultBuilder eine kleine DSL: Definieren Sie Builder-Funktionen, setzen Sie Blöcke zusammen und unterstützen Sie Bedingungen/Schleifen für eine gut lesbare Konstruktion. 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 1 von 3.
Wie lange dauert die Lektion „Mini-DSLs mit Result Builders erstellen“?
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