在一些情况下,你会需要得到一个包含枚举所有成员的集合。可以通过如下代码实现:
令枚举遵循 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 相关信息,请参见 协议。