9.3. 枚举成员的遍历

在一些情况下,你会需要得到一个包含枚举所有成员的集合。可以通过如下代码实现:

令枚举遵循 CaseIterable 协议。Swift 会生成一个 allCases 属性,用于表示一个包含枚举所有成员的集合。下面是一个例子:

enum Beverage: CaseIterable {
    case coffee, tea, juice
}
let numberOfChoices = Beverage.allCases.count
print("\(numberOfChoices) beverages available")
// 打印“3 beverages available”

在前面的例子中,通过 Beverage.allCases 可以访问到包含 Beverage 枚举所有成员的集合。allCases 的使用方法和其它一般集合一样——集合中的元素是枚举类型的实例,所以在上面的情况中,这些元素是 Beverage 值。在前面的例子中,统计了总共有多少个枚举成员。而在下面的例子中,则使用 for-in 循环来遍历所有枚举成员。

for beverage in Beverage.allCases {
    print(beverage)
}
// coffee
// tea
// juice

在前面的例子中,使用的语法表明这个枚举遵循 CaseIterable 协议。想了解 protocols 相关信息,请参见 协议