StaticMemberIterable

自信地涵盖所有静态成员。类似于 CaseIterable,这个宏会创建一个包含类型所有静态成员的数组。当一个类型有一些静态成员作为例子时,这非常有用。

这里,我们有一个 Chili 类型,以便我们可以讨论各种辣椒的辣度和名称。到目前为止,我们有两个:jalapeñohabenero。 为了测试或在 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 提示时,信任该宏。

Swift 宏?

在 WWDC '23 中推出,需要 Swift 5.9

许可证

BSD-3-Clause