14 枚举的本质、溢出运算符

文章目录

运算符重载

运算符重载: 类、结构体、枚举都可以为现有的运算符提供新的动能

运算符重载一般写在类里面 ,为了不定义实例,就能调用,定义为类型方法

static prefix func -(Int)-> Int {

}

Equatable协议
如果一个类已经有相等的方法,也要声明为准守Equatable协议,好处

明确告诉别人,我有比较功能
很多有要求Equatable协议的地方,都可以使用了
也能使用!= 运算符

对于引用类型,比较存储的地址值是否相等使用 === !==

Comparable 协议

比较的结果三种情况

自定义运算符
prefix operator
postfix operator
infix operator : 优先级组

结合性 : 多个运算符,描述先从左边开始,还是先从右边开始 ,如果没有结合性,表示不允许连续出现多个运算符
优先级 : 高于什么,低于什么
assignment : 在可选链拥有和赋值运算符有一样的优先级

扩展

不能添加存储属性: 不能改变内存结构
扩展可以给协议提供默认实现,也间接的实现了可选协议