自信地涵盖所有静态成员。类似于 CaseIterable
,这个宏会创建一个包含类型所有静态成员的数组。当一个类型有一些静态成员作为例子时,这非常有用。
这里,我们有一个 Chili
类型,以便我们可以讨论各种辣椒的辣度和名称。到目前为止,我们有两个:jalapeño
和 habenero
。 为了测试或在 UI 中显示,我们希望能够自信地列出 jalapeño 和 habenero。有了 @StaticMemberIterable
,我们终于可以做到这一点了。
@StaticMemberIterable
struct Chili {
let name: String
let heatLevel: Int
static let jalapeño = Chili(name: "jalapeño", heatLevel: 2)
static let habenero = Chili(name: "habenero", heatLevel: 5)
}
展开为
struct Chili {
let name: String
let heatLevel: Int
static let jalapeño = Chili(name: "jalapeño", heatLevel: 2)
static let habenero = Chili(name: "habenero", heatLevel: 5)
static let allStaticMembers = [jalapeño, habenero]
}
在 Package.swift
中,将这个包添加到你的依赖项中。
.package(url: "https://github.com/FullQueueDeveloper/StaticMemberIterable.git", from: "1.0.0"),
并将 "StaticMemberIterable"
添加到你的 target 的依赖项列表中。
当 Xcode 提示时,信任该宏。
在 WWDC '23 中推出,需要 Swift 5.9