【发布时间】:2016-08-12 19:26:37
【问题描述】:
我显然遗漏了一些关于enums 如何在 Swift 中工作的基本知识。考虑以下场景:
typealias State = String
enum MyStates : State {
case Start, Working, Done
}
我现在想要一个函数来处理States(例如,作为状态机的一部分等):
func doSomething(s: State) {
print("I got \(s)!")
}
在我看来,我应该可以这样称呼它:
doSomething(MyStates.Start)
但是,这会失败并出现以下错误:Cannot convert value of type 'MyStates' to expected argument type 'State' (aka 'String')
我很困惑。在我看来,通过将MyStates 声明为State 类型,MyState 实例应该与State 具有is-a 关系,所以这应该有效。我错过了什么?
【问题讨论】:
-
您只需要添加 MyStates.Start.rawValue。到时候就好了。
-
感谢您的回复!
标签: ios swift xcode macos enums