假设我有一个通用类:
class SomeClass<Element> { // What is the difference between this: var array: [SomeClass]! // and this declaration: var array2: [SomeClass<Element>]! }
这些声明之间有什么区别?
没有泛型参数就不能存在泛型类型,因此省略泛型类型意味着您希望编译器推断该类型。
在这种情况下,要推断的逻辑类型为Element。
Element
请注意,这仅适用SomeClass于您使用了内部SomeClass声明。它不适用于其他泛型类。
SomeClass
可以在变量声明中使用类似的通用参数推断:
let instance: SomeClass = SomeClass<Int>() let array: Array = [1] // Array<Int>