我有以下代码:
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]