Swift:泛型类中的声明

Swift:泛型类中的声明,swift,generics,Swift,Generics,假设我有一个泛型类: class SomeClass<Element> { // What is the difference between this: var array: [SomeClass]! // and this declaration: var array2: [SomeClass<Element>]! } class-SomeClass{ //这两者之间的区别是什么: 变量数组:[SomeClass]! //本宣言: var arra

假设我有一个泛型类:

class SomeClass<Element> {
  // What is the difference between this:
  var array: [SomeClass]!

  // and this declaration:
  var array2: [SomeClass<Element>]!
}
class-SomeClass{
//这两者之间的区别是什么:
变量数组:[SomeClass]!
//本宣言:
var array2:[SomeClass]!
}

这些声明之间的区别是什么?

没有泛型参数,泛型类型就不可能存在,因此省略泛型类型意味着您希望编译器推断类型

在这种情况下,要推断的逻辑类型是
元素

请注意,这仅适用于在
SomeClass
声明中使用
SomeClass
的情况。它不适用于其他泛型类

可以在变量声明中使用类似的泛型参数推断:

let instance: SomeClass = SomeClass<Int>()
let array: Array = [1] // Array<Int>
let实例:SomeClass=SomeClass()
let array:array=[1]//数组

它们似乎是完全相同的,只是对于
数组
会推断出泛型参数。但是,我在语言引用中找不到它。看起来没有-我本以为会有差异,但它们似乎是等效的。请注意,您可以alt单击Xcode中的属性,查看它推断的类型是什么-实际上它们看起来是相同的。当在泛型类自己的声明中引用泛型类时,这似乎是类型推断的一个特例。