用于 Array
和 Set
的 Swift 结果构建器 (Result Builders)
使用 结果构建器 创建或修改数组和集合,允许使用内联逻辑,例如 if/else
、switch
、for
循环和可用性检查。 并且不需要使用逗号来分隔元素。
例如,与 Combine 结合使用时,结果构建器可用于将 AnyCancellable
实例添加到 Set
,而无需单独调用每个实例上的 store(in:)
。
请参阅示例代码(如下)中的 常见用例示例。
init(@Builder elements: () -> Self)
static func build(@Builder elements: () -> Self) -> Self
mutating func append(@Builder elements: () -> Self)
func appending(@Builder elements: () -> Self) -> Self
init(@Builder elements: () -> Self)
static func build(@Builder elements: () -> Self) -> Self
mutating func insert(@Builder elements: () -> Self)
func inserting(@Builder elements: () -> Self) -> Self
13.0
5.8
包依赖 (Package Dependency)
将
<version>
替换为所需的最低版本。
.package(url: "https://github.com/Tinder/CollectionBuilders.git", from: "<version>")
目标依赖 (Target Dependency)
"CollectionBuilders"
https://swiftpackageindex.cn/Tinder/collection.json
Array
和 Set
结果构建器可以与任何 Element
类型一起使用。
常见用例示例
NSLayoutConstraint.activate(Array {
subview.leftAnchor.constraint(equalTo: view.leftAnchor)
subview.rightAnchor.constraint(equalTo: view.rightAnchor)
subview.topAnchor.constraint(equalTo: view.topAnchor)
subview.bottomAnchor.constraint(equalTo: view.bottomAnchor)
})
var cancellables = Set<AnyCancellable>()
cancellables.formUnion(Set {
publisherA.sink { value in }
publisherB.assign(to: \.keyPath, on: object)
})
或 (OR)
var cancellables = Set<AnyCancellable>()
cancellables.insert {
publisherA.sink { value in }
publisherB.assign(to: \.keyPath, on: object)
}
虽然感谢您对贡献此项目的兴趣,但开源此项目的目的仅在于与社区分享。 这意味着我们目前无法接受外部贡献,并且不会审查或合并拉取请求。 要报告安全问题或漏洞,请提交 GitHub 问题。
在 Match Group 修改的 3 条款 BSD 许可证 下获得许可。