Skip to content

Instantly share code, notes, and snippets.

@resultBuilder
struct MultipleChildBuilder {
...
static func buildArray(_ components: [[DocumentElement]]) -> [DocumentElement] {
components.flatMap { $0 }
}
}
let document = Document {
for index in 1...3 {
Label(text: "Section \(index)").size(.subtitle)
Label(text: "A text").size(.body)
}
}
let document = Document {
switch value {
case 1:
Label(text: "Line 1")
case 2:
Label(text: "Line 2")
case 3:
Label(text: "Line 3")
default:
Label(text: "Line")
@resultBuilder
struct MultipleChildBuilder {
...
static func buildEither(first component: [DocumentElement]) -> [DocumentElement] {
return component
}
static func buildEither(second component: [DocumentElement]) -> [DocumentElement] {
return component
}
let document = Document {
if hasLogo {
Logo(imageName: "CompanyLogo.png")
} else {
Label(text:"Title").size(.title)
}
Label(text:"Another line of text")
}
@sjordine
sjordine / Array.swift
Last active September 16, 2021 15:38
let document = Document (
//The problem lies on this convertion
[DocumentElement]
//Those are OK!
DocumentElement
DocumentElement
)
let circuit = SeriesCircuit (
[ Resistor(resistance: 7.0),
ParallelCircuit(...) ]
}
let circuit = SeriesCircuit {
Resistor(resistance: 7.0)
ParallelCircuit (
[Resistor(resistance: 10.0),
SeriesCircuit(...)] )
}
let circuit = SeriesCircuit {
Resistor(resistance: 7.0)
ParallelCircuit {
Resistor(resistance: 10.0)
SeriesCircuit (
[Resistor(resistance: 6.0),
Resistor(resistance: 4.0)])
}
}
@resultBuilder
struct MultipleChildBuilder {
...
static func buildOptional(_ component: DocumentElementConvertible?) -> [DocumentElement] {
return component?.asElements() ?? []
}
}