初步理解Swift中的泛型 Swift中的泛型使用示例

泛型(Generic)是Swift中的一个重要特性,它让你可以编写灵活、泛用的函数和类型。本文将介绍Swift中的泛型使用

1. 泛型函数

定义一个泛型函数,使用泛型 where 子句为泛型添加约束:

func swapTwoValues<T: Equatable>(_ a: inout T, _ b: inout T) {
    let temporaryA = a
    a = b
    b = temporaryA
}

调用泛型函数:

var someInt = 3
var anotherInt = 107 
swapTwoValues(&someInt, &anotherInt)
var someString = "Hello"
var anotherString = "World"
swapTwoValues(&someString, &anotherString)

2. 泛型类型

定义一个简单的泛型集合类型:

struct Stack<Element> {
    var items = [Element]()
    mutating func push(_ item: Element) {
        items.append(item)
    }
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

使用泛型类型:

var stackOfStrings = Stack<String>()
stackOfStrings.push("Hello")
stackOfStrings.push("World")
stackOfStrings.pop()
var stackOfInts = Stack<Int>()
stackOfInts.push(1)
stackOfInts.push(2)
stackOfInts.pop()

3. 关联类型

定义一个协议,使用关联类型作为协议的一部分:

protocol Container {
    associatedtype Item
    mutating func append(_ item: Item)
    var count: Int { get }
}

实现泛型协议:

struct Stack<Element>: Container {
    var items = [Element]()
    mutating func append(_ item: Element) {
        items.append(item)
    }
    var count: Int {
        return items.count
    }
}

泛型和关联类型为Swift增加了灵活性,让我们可以编写出更加泛用的代码。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论