Ленивые переменные

Изменения в новых версиях / Swift 5.8

// *** in version 5.8: ***
//any variables are allowed
//inside a result builder

@resultBuilder
struct TextBuilder {
    static func buildBlock(
        _ parts: String...) -> String {
        parts.joined(separator: " ")
    }
}

func makeText(
    @TextBuilder _ build: () -> String)
    -> String {
    build()
}

let text = makeText {
    lazy var hello = "Hello,"
    let name = "Alina"
    hello
    name
}

print("text is \"\(text)\"")
//text is "Hello, Alina"


Сняты все ограничения на переменные в result builders (SE-0373). Например, в Swift 5.8 ленивые переменные можно объявлять прямо внутри result builder.