Swift中的泛型函数

泛型是Swift最强大的功能之一,许多Swift标准库都是使用泛型代码构建的。 Swift 4语言提供“通用”功能来编写灵活且可重用的函数和类型。 泛型用于避免重复并提供抽象。

现在让我们看看快速语言中泛型函数的用法以及如何使用它。 例如,考虑使用以下程序交换值。

如果我们看上面的程序,该函数仅接受Int值。 因此,如果我们要编写用于接受“ String”或“ Double”值的函数,则必须编写两个类似的函数,用“ String”或“ Double”替换“ Int”。

因此,如果我们要编写一个接受任何类型的函数(无论是IntDouble还是String) ,该怎么办

为此,我们需要编写通用函数。

如何编写泛型函数?

Swift 4提供作为通用类型参数名称

func swapTwoValues(_ a: inout T, _ b: inout T) {

let temporaryA = a

a = b

b = temporaryA

}

swapTwoValues(_:_:)函数的主体与swapTwoInts(_:_:)函数的主体相同。 但是, swapTwoValues(_:_:)的第一行与swapTwoValues(_:_:)略有不同。 以下是第一行的比较:

func swapTwoInts(_ a: inout Int, _ b: inout Int)

func swapTwoValues(_ a: inout T, _ b: inout T)

泛型函数如何工作?

该函数的通用版本使用占位符类型名称 (在这种情况下称为T ), 而不是实际的类型名称 (例如IntStringDouble )。

占位符类型名称并没有说明 T 必须是 什么 ,但它确实 a b 必须具有相同的 T 类型无论 T 代表 什么

每次 swapTwoValues(_:_:) 函数 时, swapTwoValues(_:_:) 确定 要代替 T 使用的实际类型