在Swift中,类名中的<>(尖括号)有什么作用?

30
在Swift中的类声明中,尖括号<>及其中声明的参数有什么用途?例如:
```swift class MyClass { // class definition goes here } ```
public class ClassName<T: Comparable> {


}

1
这是一个通用的功能。https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html#//apple_ref/doc/uid/TP40014097-CH26-ID179 - Rob
2个回答

15

这使得类变得更加通用。Swift标准库中没有很多通用类的例子,但它有一些非常著名的通用结构体和枚举:

public struct Array<Element> : CollectionType, MutableCollectionType, _DestructorSafeContainer

public struct Dictionary<Key : Hashable, Value> : CollectionType, DictionaryLiteralConvertible

public enum Optional<Wrapped> : _Reflectable, NilLiteralConvertible

Swift编程语言“泛型”一章中了解更多有关泛型的内容。


1
为什么我们需要使用泛型?如果我想要从一个类传递一个数组到另一个类,那么泛型有用吗?如何使用? - Chowdhury Md Rajib Sarwar
那个问题太宽泛了。你需要阅读我在答案中提到的Swift书籍部分,或者具体说明“一个类”和“另一个类”是什么以及“数组”中包含了什么。 - rob mayoff
1
Ayon,不,泛型并不是用于“转换”的,而是一种声明类或结构体适用于各种类型的方法,但以强类型方式实现。你关于数组的问题很讽刺,因为Swift数组本身就是泛型(例如,数组的实例可以是特定类型的数组,仅限于该类型,但所有数组实例都享有相同的方法、属性等)。 - Rob

-1

它定义了一个带有占位符名称 i 的类型参数,在泛型函数中,您可以将其用作参数。

例如:

 func swapTwoWhatever<T>( a: T, b : T ) {
}

这就是为什么你可以在 a 中使用 T:


这在之前发布的同一链接中已经解释过了,字面上使用相同的词语。https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html#//apple_ref/doc/uid/TP40014097-CH26-ID179 - lorenzo gonzalez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接