【发布时间】:2018-01-09 04:35:38
【问题描述】:
请注意,我已阅读此post,但该帖子使用 switch 语句,并且它应该在模式匹配时执行某些操作(返回 true)。另一方面,如果模式匹配并使用 if-case 语句,我不想做任何事情。
我有这个枚举:
enum MyEnum {
case a
case b(Int)
case c
case d
}
这是它的一个实例:
let myEnum: MyEnum = .a
如果myEnum 不是.b,现在我想做点什么。由于.b 有一个关联值,我不能简单地使用 if 语句检查:
if myEnum != .b { // compiler error
// do my thing here
}
所以我必须使用 if-case 语句来匹配它:
if case .b(_) = myEnum {
} else {
// do my thing here
}
但我真的很讨厌使用空 if 子句。这对我来说看起来很笨拙。我试图天真地这样做:
if case .b(_) != myEnum { // compiler error!
// do my thing here
}
除了使用空的 if 子句之外,还有更好的方法吗?
无论模式是否匹配,我仍然有应该运行的代码,因此 guard 语句将不起作用。
【问题讨论】:
标签: swift enums pattern-matching