知识卡片

泛型解决类型重复实现问题

专业/工作 · 636

内容

当一个函数或类型的逻辑跟具体类型无关、只关心某种类型关系(比如”两个参数类型必须相同”) 时,如果不用泛型,唯一的办法是靠[[函数参数命名的三种设计取舍|函数重载]]给每种可能的 具体类型各写一份几乎相同的实现——不仅重复,还永远列不完。泛型把”类型”本身变成参数, 在函数或类型定义时用占位符(如 T)表示,调用时由编译器根据实际传入的值推断出具体类型, 同时仍然保留编译期类型检查。发散:这是”一次实现、任意类型复用”与”每种类型单独实现、 但类型信息更直白”之间的权衡;泛型灵活但会削弱静态类型检查的精确度,这也是模拟面试环节 特别提醒”不能滥用泛型”的原因——该用具体类型明确表达意图时,滥用泛型反而让代码更晦涩。

参考来源

《Swift 4从零到精通iOS开发》第11章《类型转换、泛型、扩展与协议》