Swift 中如何使用字典类型作为范型约束

今天学员群里有人提了这么一个问题,为什么把特性的字典类型作为范型类型约束的时候,就必然报错?

用特定的字典类型作为范型类型约束会报错

显然,说的很明确了,“你不能从一个非协议、非类的类型继承”。显然,字典是个范型结构体……

那么解决思路也很明确了,创建一个类来装饰个字典或许是个不错的选择但太麻烦,那么就从协议上下手。

有条件的协议遵循

我们可以给字典这个结构体进行扩展,让它遵循一个我们的空协议:

但注意这里我们限定条件,即字典的 Key 必须是 String 类型:

内容全部为空,因为不用做任何额外的操作。

这样,我们就可以用这个协议来进行约束了,如果字典的类型不符合要求,那么这个字典就不会遵循我们的协议:

测试结果

 

发布者:R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

留下评论

电子邮件地址不会被公开。 必填项已用*标注