Result builders — это возможность Swift, которая преобразует последовательность выражений внутри замыкания в одно объединённое значение. Они объявляются с помощью атрибута @resultBuilder.
Вместо того чтобы вручную объединять значения, result builders дают тебе возможность писать чистый, декларативный код, который читается как предметно-ориентированный язык. Builder берёт на себя всю логику объединения под капотом.
Самый известный пример — @ViewBuilder в SwiftUI:
@ViewBuilder
var body: some View {
Text("Hello")
Image("logo")
Button("Tap me") { }
}
Без @ViewBuilder тебе пришлось бы самостоятельно явно объединять эти представления. Builder автоматически объединяет их в одну иерархию представлений.
Ты можешь определить свой собственный result builder для любой предметной области:
@resultBuilder
struct ArrayBuilder {
static func buildBlock(_ components: Int...) -> [Int] {
components
}
}
Это позволяет писать:
@ArrayBuilder
func makeNumbers() -> [Int] {
1
2
3
}
@resultBuilder@ViewBuilder — самый известный встроенный примерbuildIf, buildEither и buildArrayResult builders используют атрибут @resultBuilder и преобразуют последовательность выражений в одно объединённое значение, скрывая логику объединения от пользователя.
Новый — ещё не проверен сообществом
Вы