gpt4 book ai didi

ios - Swift 中类型别名的枚举

转载 作者:搜寻专家 更新时间:2023-11-01 06:38:16 24 4
gpt4 key购买 nike

我显然遗漏了一些关于 enums 在 Swift 中如何工作的基本知识。考虑以下场景:

typealias State = String

enum MyStates : State {
case Start, Working, Done
}

我现在想要一个函数来处理 State(例如,作为状态机的一部分等):

func doSomething(s: State) {
print("I got \(s)!")
}

在我看来,我应该可以这样调用它:

doSomething(MyStates.Start)

但是,这会失败并出现以下错误:无法将“MyStates”类型的值转换为预期的参数类型“State”(又名“String”)

我很困惑。在我看来,通过将 MyStates 声明为 State 类型,MyState 实例应该有一个 is-aState 的关系,因此这应该有效。我错过了什么?

最佳答案

MyState 是枚举类型,State(又名 String)是枚举的原始类型。

要么你必须传递原始值

typealias State = String

enum MyStates : State {
case Start, Working, Done
}

func doSomething(s: State) {
print("I got \(s)!")
}

doSomething(MyStates.Start.rawValue)

或通常的方式

enum MyStates : String {
case Start, Working, Done
}

func doSomething(s: MyStates) {
print("I got \(s)!")
}

doSomething(MyStates.Start)

关于ios - Swift 中类型别名的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38925203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com