Result builders help create easy-to-read code that looks like a special language inside Swift. They let you write complex things simply and clearly.
0
0
Why result builders enable DSLs in Swift
Introduction
When you want to make a simple way to build user interfaces with code that looks like a design language.
When you want to write configuration or setup code that reads like instructions.
When you want to create a mini language inside your program to describe something clearly.
When you want to combine many small pieces of code into one big result easily.
When you want your code to be more readable and look less like regular programming.
Syntax
Swift
@resultBuilder struct BuilderName { static func buildBlock(_ components: ComponentType...) -> ResultType { // Combine components into one result } // Other optional build methods } func useBuilder(@BuilderName content: () -> ResultType) { let result = content() // Use the result }
The @resultBuilder attribute marks a type that helps combine code blocks.
Functions marked with the builder let you write code inside curly braces that looks like a special language.
Examples
This example shows a simple builder that joins strings with commas.
Swift
@resultBuilder struct SimpleBuilder { static func buildBlock(_ components: String...) -> String { components.joined(separator: ", ") } } func makeList(@SimpleBuilder content: () -> String) { print("List: " + content()) } makeList { "Apple" "Banana" "Cherry" }
This example sums numbers written inside the builder block.
Swift
@resultBuilder struct IntSumBuilder { static func buildBlock(_ components: Int...) -> Int { components.reduce(0, +) } } func sumNumbers(@IntSumBuilder content: () -> Int) { print("Sum: " + String(content())) } sumNumbers { 10 20 30 }
Sample Program
This program uses a result builder to create a simple HTML page string by combining parts inside a block.
Swift
@resultBuilder struct HTMLBuilder { static func buildBlock(_ components: String...) -> String { components.joined(separator: "\n") } } func html(@HTMLBuilder content: () -> String) -> String { "<html>\n" + content() + "\n</html>" } let page = html { "<head><title>My Page</title></head>" "<body>" "<h1>Welcome!</h1>" "</body>" } print(page)
OutputSuccess
Important Notes
Result builders let you write code that looks like a small language inside Swift.
They make code easier to read and write by hiding complex combining logic.
SwiftUI uses result builders to create user interfaces in a clear way.
Summary
Result builders help create readable mini languages inside Swift code.
They combine many pieces of code into one result automatically.
This makes code simpler and easier to understand.