gpt4 book ai didi

swift - 如何使用枚举(在结构内部定义)作为字典的键?

转载 作者:行者123 更新时间:2023-11-30 12:50:48 25 4
gpt4 key购买 nike

我有以下代码:

struct TestStruct2 {
let field1: String
let field2: Int

enum TestEnum2 {
case Value1
case Value2
}

}

let dic2 = Dictionary<TestStruct2.TestEnum2, TestStruct2>()
let dic3 = [TestStruct2.TestEnum2 : TestStruct2]()

dic2 工作成功。

但是 dic3 返回编译器错误:

 (Type of expression is ambiguous without more context)

我不明白为什么。有什么想法吗?

最佳答案

正如 @Hamish 在评论中提到的,这是一个编译器错误。您已经展示了一种解决方法,即使用长格式:

let dic2 = Dictionary<TestStruct2.TestEnum2, TestStruct2>()

第二个解决方法是为嵌套类型创建一个typealias:

typealias TestStruct2Enum2 = TestStruct2.TestEnum2

let dic3 = [TestStruct2Enum2 : TestStruct2]()

第三种解决方法是创建整个字典的typealias:

typealias Test2Dict = [TestStruct2.TestEnum2 : TestStruct2]

let dic4 = Test2Dict()

第四种解决方法是显式指定类型并使用 [:] 文字初始化字典:

let dic5: [TestStruct2.TestEnum2 : TestStruct2] = [:]

最后的解决方法是将文字转换为类型:

let dic6 = [:] as [TestStruct2.TestEnum2 : TestStruct2]

关于swift - 如何使用枚举(在结构内部定义)作为字典的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41002612/

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