swift学习要点摘要19-23(完结)

来源:互联网 发布:独立域名与二级域名 编辑:程序博客网 时间:2024/06/05 13:48

19.类型嵌套

要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套。

20.扩展

扩展就是向一个已有的类,结构体或枚举类型添加新功能(functionality)。这包括在没有权限获取原始码的情况下扩展类型的能力(既逆向建模)。

Swift 中的扩展可以: 1. 添加计算型属性和静态属性 2.定义实例方法和类型方法 3.提供新的构造器 4.定义下标 5.定义和使用新的嵌套类型 6.使一个已有类型符合某个接口

extension SomeType { //加到SomeType的新功能 }

extension SomeType:SomeProtocol, AnotherProtocol { //协议实现写到这里 }

21.协议

Protocol(协议)用于统一方法和属性的名称,而不实现任何功能。协议遵循者需要提供协议指定的成员,如属性,方法,操作符,下标等。

当某个类含有父类的同时实现了协议,应当把父类放在所有的协议之前,如下所示:

class SomeClass : SomeSuperClass, FirstProtocol, AnoherProtocol { 类的内容 }

委托:委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由(委托)给其他的类型。

委托模式的实现很简单:定义协议来封装哪些需要被委托的函数和方法,使其遵循者拥有这些被委托的函数和方法。

22.泛型

Swift的数组和字典类型都是泛型集。

func swapTwoValues<T>(inout a: T, inout b: T) { let tempA = a; a = b; b= tempA }

类型约数:指定了一个必须继承自指定类的类型参数,或者遵循一个特定的协议或协议构成。

类型约数语法:func someFunction<T: SomeClass, U: SomeProtocol>(someT: T, someU: U) { }  //T必须是SomeClass子类,U必须遵循SomeProtocol协议

23.高级运算符

swift为整形计算提供了5个&符号开头的溢出运算符:&+,&-,&*,&/,&%

新的全局运算符声明需要在全局域使用operator关键字声明,可以声明为前置,中置或后置的。operator prefix +++ {}


0 0