前言
Swift 中使用了大量的协议。看到这篇文章,做个笔记。原文地址
Begining
通过协议,你可以使得类型系统更加有组合性,你可以理清继承的长链。当然你将要放弃一个长而高的继承链,为了一个有协议一致性的宽的链.
少继承多组合
主要有:三种协议类别:"Can do","Is a"以及"Can be"
can do
这些描述的事情是类型可以做或已经做过的,对类进行的操作,替代视图。。它们也以 -able 结尾为语法
Hashable ,Equatable,Comparable等
"Is a"协议
这些描述类型是什么样的。基于身份,分类,分组,而不是基于操作,以 -Type结尾
CollectionType,SequenceType等
有"Can be"类型
这不是同一个东西的替代视图,正如我们已经看到的,这些都是直接转换。从类型X转换到Y。这些协议以"-Convertible"结尾。
IntegerLiteralConvertible,CustomStringConvertible等
基本思想,是把你APP和代码中常见的操作抽象出来,协议化他们
- Printable曾是一个 -able 协议,现在却是CustomStringConvertible。这是临阵倒戈,对吧?但我认为,我看它是以替代视图的含义,事物本身并没有改变,只是外在的样子正在发生变化。从全尺寸图像到缩略图,或从枚举值到原始值,它们其实是一样的。只是你透过一个不同的镜头。然而转换协议更像是"我有一个整数,我将变为一个字符串。"这是CustomStringConvertible,对吧?你把它改变成了一个完全不同的类型,这不仅仅是一个有自己东西的不同的视图,它会有自己的生命周期。