如何解决是否有针对具有关联值的枚举案例的速记布尔检查?
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
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。