class ClassA {
class ClassB {
}
}
let compiles: [ClassA.ClassB]
let doesNotCompile = [ClassA.ClassB]()
Playground执行失败:MyPlayground.playground:109:22:错误:无效使用'()'调用非函数类型'[ClassA.ClassB.Type]'的值 让doNotCompile = ClassA.ClassB ^ ~~
答案 0 :(得分:3)
正如您所说,它适用于这种语法:
let arrayOfClassB: [ClassA.ClassB] = []
但如果我们声明[]()
:
typealias
语法有效
typealias InnerClass = ClassA.ClassB
let arrayOfAliasesOfClassB = [InnerClass]()
所以我说它是一个错误,let arrayOfClassB = [ClassA.ClassB]()
也可以在不需要类型的情况下工作。
更新:Apple已经an opened bug了解此事。
答案 1 :(得分:1)
我不知道速记语法不起作用的原因。但是编译器似乎喜欢扩展语法
let list = Array<ClassA.ClassB>()
答案 2 :(得分:-1)
compiles是ClassA.ClassB
类型的数组在doesNotCompile中,您尝试将数组用作函数。不是吗?
let doesNotCompile = ClassA.ClassB()