我有這樣的結構有一個枚舉屬性,以及一個功能:斯威夫特3枚舉與相關的價值和功能比較
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
語法。必須有解決辦法嗎?
我在我的答案中添加了一個*多分條件*方法,它更短,更易讀,並且短路。 – vacawama