Swift 泛型在许多场景中都非常有用,以下是一些常见的应用场景:
- 函数参数和返回值:通过使用泛型,你可以编写一个可以接受任何类型参数和返回任何类型值的函数。这使得代码更加灵活和可重用。
func printGenericValue<T>(_ value: T) {
print(value)
}
- 集合类型:Swift 的集合类型(如数组、字典和集合)天然支持泛型。你可以使用泛型来指定集合中元素的类型,从而提高代码的类型安全性和可读性。
let intArray: [Int] = [1, 2, 3]
let stringArray: [String] = ["Hello", "World"]
- 自定义类型:你可以使用泛型来创建自定义类型,从而使它们更加灵活和可重用。例如,你可以创建一个泛型的结构体来表示一个键值对集合。
struct KeyValuePair<K, V> {
let key: K
let value: V
}
- 协议和扩展:你可以使用泛型来约束协议和扩展的遵循者类型,从而提高代码的复用性和可维护性。
protocol Printable {
static func print()
}
extension Int: Printable {}
extension String: Printable {}
func printPrintable<T: Printable>(_ value: T) {
T.print()
}
- 类型推断:Swift 的类型推断系统可以很好地处理泛型类型参数。这使得编写泛型代码更加简洁和直观。
let array = [1, 2, 3] // 编译器自动推断出 array 的类型为 [Int]
总之,Swift 泛型提供了一种灵活且强大的方式来编写可重用、类型安全的代码。