具有关联类型的协议

具有接口类型和泛型双重属性;是接口化的高阶泛型;

具有关联类型的协议不能作为类型,只能作为类型约束使用;

类型的具体形态:变量的类型、函数的输入输出类型、容器元素的类型;

带有关联类型的协议作为类型只能和泛型类型一起使用;要使用带有关联类型的协议,必须先定义泛型类型;

在泛化为构造器类型时,作为typeclass类型使用;

 

具体化的方向有三个:

1、具体化:直接实现为具体类型;

相对于无关联类型的协议:

无关联类型的协议可以直接作为类型来使用;

2、泛型化:泛化为类型构造器;

配置了类型的类型构造器类型也可以作为类型来使用;

 

3、接口化:进行类型擦除;

 

类型擦除后的关联协议类型可以作为类型来使用;

它使用的技术:泛型化类型构造器、协议具体化、代理包装器、接口隐藏器;

 

使用的方向只有一个:

要使用具有关联协议的类型特征的变量,先定义一个符合协议的泛型,用这个泛型定义变量;

 

泛型类型的二阶构造:

1、用类型指定构造类型;

2、构造变量进行赋值;

 

如果有类型推断,类型构造可以省略?

 

posted @ 2019-03-15 19:36  zzfx  阅读(414)  评论(0编辑  收藏  举报