元素与通用类型<T>

cas*_*las 1 swift

我想知道为什么Swift使用Element而不是Generic <T>下面的示例。

Elementvs和有什么区别T

在此处输入图片说明

Mar*_*n R 5

泛型

类型参数

类型参数指定并命名一个占位符类型,并在函数名称之后立即写在一对匹配的尖括号(例如<T>)之间。

命名类型参数

在大多数情况下,类型参数具有描述性名称,例如Key和Value in Dictionary<Key, Value>和Element in Array<Element>,它可以告诉读者类型参数与其所使用的泛型类型或函数之间的关系。但是,当它们之间的关系,传统上是使用单个字母(例如T,U和V)(例如swapTwoValues(_:_:)上面的函数中的T)来命名。

所以

func createArray<Element>(element: Element) -> [Element] { ... }
func createArray<T>(element: T) -> [T] { ... }
func createArray<Rumpelstilzchen>(element: Rumpelstilzchen) -> [Rumpelstilzchen] { ... }
Run Code Online (Sandbox Code Playgroud)

是相同的功能。此处的占位符类型是返回数组的元素类型,因此Element是合适的“描述性名称”。

但这没有任何区别,是由您选择占位符的名称,还是在可读性和简洁性之间取得平衡。