问题描述
if case .voice = mode {
return true
} else {
return false
}
可能有速记版本吗?例如:
.voice == mode ? true : false
mode 是具有关联值的枚举:
enum Mode {
case `default`
case voice(VoiceMode)
}
解决方法
没有内建的方法来检查枚举大小写的相等性而不检查关联值的相等性。如果您的枚举符合 Equatable
,您可以使用相等运算符来比较两个枚举值,但是,您仍然无法执行 mode == Mode.voice
,因为 Mode.voice
在没有VoiceMode
关联值。
您可以在枚举上定义一个计算属性,该属性仅比较案例,而不是它们的关联值。
enum Mode {
case `default`
case voice(VoiceMode)
var isVoice: Bool {
if case .voice = self {
return true
} else {
return false
}
}
}