具有关联类型的协议
具有接口类型和泛型双重属性;是接口化的高阶泛型;
具有关联类型的协议不能作为类型,只能作为类型约束使用;
类型的具体形态:变量的类型、函数的输入输出类型、容器元素的类型;
带有关联类型的协议作为类型只能和泛型类型一起使用;要使用带有关联类型的协议,必须先定义泛型类型;
在泛化为构造器类型时,作为typeclass类型使用;
具体化的方向有三个:
1、具体化:直接实现为具体类型;
相对于无关联类型的协议:
无关联类型的协议可以直接作为类型来使用;
2、泛型化:泛化为类型构造器;
配置了类型的类型构造器类型也可以作为类型来使用;
3、接口化:进行类型擦除;
类型擦除后的关联协议类型可以作为类型来使用;
它使用的技术:泛型化类型构造器、协议具体化、代理包装器、接口隐藏器;
使用的方向只有一个:
要使用具有关联协议的类型特征的变量,先定义一个符合协议的泛型,用这个泛型定义变量;
泛型类型的二阶构造:
1、用类型指定构造类型;
2、构造变量进行赋值;
如果有类型推断,类型构造可以省略?
我思故我在