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

前端之家收集整理的这篇文章主要介绍了swift – 如何使用枚举(在结构中定义)作为字典的键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码
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 TestStruct2Enum2 = TestStruct2.TestEnum2

let dic3 = [TestStruct2Enum2 : TestStruct2]()

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

typealias Test2Dict = [TestStruct2.TestEnum2 : TestStruct2]

let dic4 = Test2Dict()

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

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

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

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

猜你在找的Swift相关文章