swift的类型约束

swift的类型约束,第1张

概述关键词: 类型与功能绑定、类型指定、访问控制。   类型约束的本质: 1、是否强制指定具有某些特征的类型;看类型构造器的定义本身是否对类型有约束; 2、访问控制:类型构造器的功能分为通用功能和约束功能; 通用功能任何实例类型都能访问; 约束功能,只有符合约束的构造实例能够访问。   类型与算法(功能)绑定;对引用类型施加约束,实质上是对构造类型开放了一批底层的功能接口; 类型构造器可以在这些功能接

关键词:

类型与功能绑定、类型指定、访问控制。

 

类型约束的本质:

1、是否强制指定具有某些特征的类型;看类型构造器的定义本身是否对类型有约束;

2、访问控制:类型构造器的功能分为通用功能和约束功能;

通用功能任何实例类型都能访问;

约束功能,只有符合约束的构造实例能够访问。

 

类型与算法(功能)绑定;对引用类型施加约束,实质上是对构造类型开放了一批底层的功能接口;

类型构造器可以在这些功能接口基础上添加吸纳的功能。

 

一、术语

 

类型构造器:含有泛型和关联类型的类型声明定义为类型构造器(kind),或者高阶类型(scala)

Now that we have a type constructor we can think of several different kinds of them,classifIEd by how many type parameters they take. The simplest – like List[_] – that take a single param have the kind:(* -> *) https://en.wikipedia.org/wiki/Kind_(type_theory) 引用类型:类型构造器所引用的可指定类型; 实例类型:指定了类型构造器中泛指类型的类型; 约束修饰的访问控制: 只有符合约束的构造实例能够访问(变量和功能); 定制功能: 类型构造器在引用类型的类型约束基础上扩展出来的新功能;

 

二、泛型(关联类型)的运算

1、类型指定;

2、类型约束;

 

类型约束的潜台词是:被约束类型是泛型或可指定类型;

在swift中只有泛型类型和关联类型能参与类型约束;

 

类型约束是在类型指定以后检查约束表达式是否合法;

类型指定和类型约束及类型约束检查都是编译器行为;

 

类型约束只是一个进行合法性检查的表达式,表达式的评估在所有的待定类型指定以后进行。

 

三、类型约束的形式

 

1、无约束:按照泛型模式含义,类型构造器的缺省实现是类型无关的,是数据组织和算法的通用部分;

 

2、固有约束:声明关联类型时附带了约束:

1)指定类型时需要满足类型约束的要求;

2)可以称之为类型约束构,约束为固有属性;可以在此约束基础上扩展出更多的通用功能;

 

3、通用扩展约束

在约束的基础上扩展了新的功能;新的功能都受到约束的控制。

约束作用于整个构造类型;

符合约束的构造实例才能访问约束修饰的功能。

 

4、单个功能约束

类型约束作用于单个功能上,

符合约束的构造实例才能访问。

 

四、约束的作用范围

 

1、构造器本身对引用的类型有约束:

这个是最强约束,构造实例必须指定符合约束的类型;全局有效;

 

2、附加约束(扩展约束):构造器的扩展整体对引用类型做了约束;

不符合约束的实例能够访问通用功能;

符合约束的构造类型能够访问本扩展的所有功能;

 

3、局部约束:

约束作用于单个功能上;

访问控制与上面类似;

 

 

 

 

五、类型约束的意义

类型与算法是绑定的,对类型做了约束,相当于给构造类型提供了更多的可用功能进行扩展。

 

每一个(一类)类型都有建立在之上的算法;类型和算法密切相关,每一个类型都有绑定在该类型之上的算法;

对泛型的类型进行指定或约束,意味着该泛型的类型相关性,意味着可以使用关联在该类型相关算法;

这样,类型构造器就能使用关联的该类型上的算法进行定向扩展;

扩展出来的新的功能,泛型和协议具体实现时指定的类型满足约束条件的实现使用;

 

指定的类型满足约束,可以使用建立在该约束上的功能扩展;

 

六、总结

构造类型决定了通用功能;

构造类型和引用类型共同决定了扩展功能;

 

构造类型本身决定了通用功能的访问;

构造类型和引用类型及约束决定了定制功能的访问;

总结

以上是内存溢出为你收集整理的swift的类型约束全部内容,希望文章能够帮你解决swift的类型约束所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1018772.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存