Swift中的泛型函数
泛型是Swift最强大的功能之一,许多Swift标准库都是使用泛型代码构建的。 Swift 4语言提供“通用”功能来编写灵活且可重用的函数和类型。 泛型用于避免重复并提供抽象。
现在让我们看看快速语言中泛型函数的用法以及如何使用它。 例如,考虑使用以下程序交换值。
如果我们看上面的程序,该函数仅接受Int值。 因此,如果我们要编写用于接受“ String”或“ Double”值的函数,则必须编写两个类似的函数,用“ String”或“ Double”替换“ Int”。
因此,如果我们要编写一个接受任何类型的函数(无论是Int , Double还是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
), 而不是实际的类型名称 (例如Int
, String
或Double
)。
占位符类型名称并没有说明 T
必须是 什么 ,但它确实说 a
和 b
必须具有相同的 T
类型 , 无论 T
代表 什么 。
每次 swapTwoValues(_:_:)
函数 时, swapTwoValues(_:_:)
确定 要代替 T
使用的实际类型 。