12、泛型编程全解析:从基础到协议导向设计

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. 泛型的类型约束

类型约束规定泛型类型必须继承自特定类或遵循特定协议,这使我们能在泛型类型中使用父类或协议定义的方法和属性。通过重写 genericEq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值