Swift 的 enum 可以带有关联值(用法参考:swiftgg.gitbook.io/swift/swift… )
当需要筛选比较某一个 case,同时不需要区分 case 的关联值时(需要比较关联值时也提供了示例),可以使用以下的写法来进行比较。 示例中提供了使用 switch-case 语句和使用 if-case 语句实现两种方式。 比较逻辑单一时,建议使用 if-case,写法相对简洁
举例:
b 为带有一个 String 类型关联值的 case,检测是否为 case b 类型。
前两个方法为后两个方法的精简,当不需要关心关联值时,功能一致;需要处理关联值具体值时,可以用后面的方案进一步处理**。**
enum ExampleType {
case a
case b(String)
}
// 用 switch case 语句来实现,无需关心关联值
func switchEnum(type: ExampleType) -> Bool {
switch type {
case .a:
return false
case .b:
return true
}
}
// 用 if case 语句来实现,无需关心关联值
func ifEnum(type: ExampleType) -> Bool {
if case .b = type {
return true
}
return false
}
// 用 switch case 语句来实现,需要关联值进一步处理
func switchEnum2(type: ExampleType) -> Bool {
switch type {
case .a:
return false
case let .b(string):
return true
}
}
// 用 if case 语句来实现,需要关联值进一步处理
func ifEnum2(type: ExampleType) -> Bool {
if case let .b(string) = type {
return true
}
return false
}