# 泛型（Generics）

URL: https://caijiao.org/swift/11-advanced/01-generics
Source: docs/swift/11-advanced/01-generics.md
Description: 本章介绍 Swift 中泛型的基本概念与用法，帮助开发者编写灵活且可重用的代码。

泛型允许你编写适用于任意数据类型的函数和类型，提高代码的复用性和灵活性。

## 基本语法

定义带有类型参数的函数：

```swift
func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}
````

## 使用示例

```swift
var x = 10
var y = 20
swapValues(&x, &y)
print(x, y)  // 输出：20 10

var a = "Hello"
var b = "World"
swapValues(&a, &b)
print(a, b)  // 输出：World Hello
```

## 泛型类型

定义泛型结构体或类：

```swift
struct Stack<Element> {
    var items = [Element]()
    mutating func push(_ item: Element) {
        items.append(item)
    }
    mutating func pop() -> Element? {
        return items.popLast()
    }
}
```

## 总结

泛型让代码更通用，减少重复，提高类型安全，是 Swift 强大的语言特性之一。
