Swift - 协议
-
简述
协议为方法、属性和其他需求功能提供了蓝图。它只是被描述为方法或属性框架而不是实现。方法和属性的实现可以通过定义类、函数和枚举来进一步完成。协议的一致性被定义为满足协议要求的方法或属性。句法
协议也遵循与类、结构和枚举类似的语法 -协议在类、结构或枚举类型名称之后声明。单协议和多协议声明也是可能的。如果定义了多个协议,它们必须用逗号分隔。当必须为超类定义协议时,协议名称应在超类名称之后使用逗号。 -
属性和方法要求
协议用于指定特定的类类型属性或实例属性。它只是单独指定类型或实例属性,而不是指定它是存储属性还是计算属性。此外,它用于指定属性是“gettable”还是“settable”。属性要求由“var”关键字声明为属性变量。{get set} 用于在类型声明后声明 gettable 和 settable 属性。Gettable 在其类型声明之后由 {get} 属性提及。当我们使用操场运行上述程序时,我们得到以下结果 - -
变异方法要求
当我们使用操场运行上述程序时,我们得到以下结果 - -
初始化程序要求
Swing 允许用户初始化协议以遵循类似于普通初始化程序的类型一致性。句法
例如
-
协议初始值设定项要求的类实现
指定或便利的初始化器允许用户通过保留的“必需”关键字初始化协议以符合其标准。协议一致性在所有子类上通过“required”修饰符确保显式或继承实现。当子类覆盖其超类初始化要求时,它由“覆盖”修饰符关键字指定。当我们使用操场运行上述程序时,我们得到以下结果 - -
作为类型的协议
它们不是在协议中实现功能,而是用作函数、类、方法等的类型。协议可以作为类型访问 --
函数、方法或初始化为参数或返回类型
-
常量、变量或属性
-
数组、字典或其他容器作为项目
当我们使用操场运行上述程序时,我们得到以下结果 - -
-
使用扩展添加协议一致性
通过使用扩展,可以采用现有类型并符合新协议。在扩展的帮助下,可以将新的属性、方法和下标添加到现有类型。 -
协议继承
Swift 4 允许协议从其定义的属性中继承属性。它类似于类继承,但可以选择列出多个以逗号分隔的继承协议。当我们使用操场运行上述程序时,我们得到以下结果 - -
仅类协议
当定义了协议并且用户想用类定义协议时,应该通过首先定义类然后是协议的继承列表来添加它。当我们使用操场运行上述程序时,我们得到以下结果 - -
协议组成
Swift 4 允许在协议组合的帮助下一次调用多个协议。句法
例子
当我们使用操场运行上述程序时,我们得到以下结果 - -
检查协议一致性
协议一致性由类似于类型转换的“is”和“as”运算符测试。-
如果实例符合协议标准,则 is 运算符返回 true,如果失败则返回 false。
-
这 as? 向下转型运算符的版本返回协议类型的可选值,如果实例不符合该协议,则该值为零。
-
向下转换运算符的 as 版本强制向下转换为协议类型,如果向下转换不成功,则会触发运行时错误。
当我们使用操场运行上述程序时,我们得到以下结果 - -