【发布时间】:2017-07-14 09:17:54
【问题描述】:
我有这个结构,它有一个枚举属性和一个函数:
struct UserInput {
enum State {
case unrestricted
case restricted(because: WarningType)
enum WarningType {
case offline
case forbidden
}
}
var config: UserInputConfig?
var state: State = .unrestricted
func isConfigured() -> Bool {
// Arbitrary checks about the config...
}
}
有没有办法重写以下条件,以便检查 isConfigured() 和 state 在同一个语句中?
if case .restricted = userInput.state {
return 1
} else if userInput.isConfigured() {
return 1
} else {
return 0
}
似乎因为State枚举使用了关联值,你不能简单地写if userInput.state == .restricted || userInput.isConfigured(),你需要使用if case语法。一定有办法解决这个问题?
【问题讨论】:
-
我在我的答案中添加了一个 multi-clause condition 方法,该方法更短、更易于阅读并且会短路。
标签: swift if-statement swift3 syntax enums