一个结果构建器,允许使用类似 SwiftUI 的语法,通过条件和循环声明式地构建数组。
灵感来自 https://gist.github.com/rjchatfield/72629b22fa915f72bfddd96a96c541eb
通常使用条件创建数组的方法
var textItems: [String] = []
textItems.append("Lorem")
if false {
textItems.append("Amen")
}
if true {
textItems.append("Ipsum")
}
textItems.append("Dolor")
使用 ArrayBuilder
通过条件创建数组
let textItems: [String] = .init {
"Lorem"
if false {
"Amen"
}
if true {
"Ipsum"
}
"Dolor"
}
也支持 switch case 和 for 循环
let textItems: [String] = .init {
"Lorem"
switch number {
case 5:
"Ipsum"
default:
Void()
}
for number in 0...2 {
"\(number)"
}
"Dolor"
}
在返回数组的函数中使用
@ArrayBuilder<String> func textItems() -> [String] {
"Lorem"
if true {
"Ipsum"
}
"Dolor"
}
let array = textItems()
在将数组作为参数的函数中使用
func numberOfItems(@ArrayBuilder<String> _ array: () -> [String]) -> Int {
return array().count
}
let count = numberOfItems {
"Lorem"
if false {
"Amen"
}
if true {
"Ipsum"
}
"Dolor"
}
// count == 3
这个库是一个 Swift 包,可以使用以下 URL 添加
https://github.com/WilhelmOks/ArrayBuilder.git
导入模块以在您的代码中使用 ArrayBuilder
import ArrayBuilderModule
要在整个项目中使用 ArrayBuilder
而无需在每个文件中导入,您可以创建一个类型别名
typealias ArrayBuilder = ArrayBuilderModule.ArrayBuilder