swift – 如何使用枚举(在结构中定义)作为字典的键?
发布时间:2020-12-14 05:45:55 所属栏目:百科 来源:网络整理
导读:我有以下代码: struct TestStruct2 { let field1: String let field2: Int enum TestEnum2 { case Value1 case Value2 }} let dic2 = DictionaryTestStruct2.TestEnum2,TestStruct2() let dic3 = [TestStruct2.TestEnum2 : TestStruct2]() dic2成功运作. 但
我有以下代码:
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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |