如何在Swift协议中定义可选方法
本文将向你解释如何定义协议中的可选方法。
在深入研究在协议中制作可选方法之前,你将首先学习什么是协议以及如何在Swift中声明一个协议。
什么是《protocol》
协议是一种定义了一组方法或属性的类型。基本上,你可以定义一个方法的蓝图来指定行为。协议类似于其他编程语言中的接口。
语法
基本实例
在这个例子中,你将创建一个名为Person的协议,以及一些与人的实体相关的属性和方法。
下面是一个在Swift中的人物协议的例子——。
PersonProtocol定义了一个叫做id的属性,有getter和setter方法,还有一个叫做fullName()的方法,返回一个字符串。为了符合这个协议,一个类型必须实现这两个要求。
下面是一个符合PersonProtocol协议的结构的例子–
现在,如果你编译上述代码,你一定会得到如下错误信息—-。
错误信息明确指出,名为PersonProtocol的协议不符合规定。这个错误的出现是因为你没有在Employee类型中实现必要的方法和属性。
这意味着你必须满足所有的实施要求,以符合该协议。你可以把代码改成这样 —
请注意,你在定义的协议中所声明的东西必须在符合要求的类型中实现。但有时,没有必要实现类型中的所有方法。
协议还可以指定可选的要求,即符合要求的类型可以选择实现的方法或属性。协议扩展是将方法或属性标记为可选的首选方式。
协议扩展是一种提供方法或属性的默认实现的方式,使其成为可选的。尽管有默认实现,但符合协议的类型可以提供自己的可选方法的实现。
让我们再创建一个像下面这样的协议-
在上述协议中,我们用一些属性和方法来定义Stack。目前,所有的方法都需要实现,如下所示
现在,你不希望在类型中实现pop()方法。因此,你可以为这个方法提供一个默认的实现,就像下面这样—-。
类型一致性的实现可能是这样的 —
正如你所看到的,pop()方法不再需要在类型中实现。
结论
用默认行为扩展现有协议的能力是相当强大的。这允许协议的发展和扩展,而不必担心破坏现有代码的兼容性。