Swift泛型编程全解析
1. 泛型函数
在编程中,有时我们需要使用多个泛型类型。这时候可以通过逗号分隔来创建多个占位符。以下是为单个函数定义多个占位符的示例:
func testGeneric<T,E>(a:T, b:E) {
print("\(a) \(b)")
}
在这个例子里,我们定义了两个泛型占位符 T 和 E 。这样,我们可以将 T 占位符设置为一种类型,把 E 占位符设置为另一种不同的类型。不过,这个函数虽然能接受不同类型的参数,但由于参数类型不同,我们无法交换它们的值。
泛型也存在一些局限性。例如,下面这个泛型函数看似可行,但实现时会报错:
func genericEqual<T>(a: T, b: T) -> Bool{
return a == b
}
报错信息为 binary operator '==' cannot be applied to two 'T' operands 。这是因为在代码编译时,参数的类型未知,Swift 不知道能否对这些类型使用相等运算符,从而抛出错误。不过,我们可以使用类型约束来告诉 Swift 我们期望该类型具备某些功能。
2. 泛型的类型约束
类型约束规定泛型类型必须继承自特定的类
超级会员免费看
订阅专栏 解锁全文
7

被折叠的 条评论
为什么被折叠?



