学会了如何定义协议之后,读者就可以使用协议去完成一些小任务。上一小节我们已经声明了printable协议,现在可以使用printable协议作为函数传参的类型限制,然后在函数实现中获取参数的description属性进行打印操作。代码示例如下:
动手写8.1.2 UseProtocol
控制台输出如下:
控制台输出如下:
本例中声明了两个函数,一个用于打印满足printable协议实例调用info方法的结果,另一个用于获取实例的description属性。本例中,函数传入参数指定的类型不是一个Swift类型,而是printable这个协议。使用协议去指定函数的传入参数会使函数的可扩展性更强,因为每个类都可能继承自不同的类,但是每个类可以满足同一个协议。如果指定传入参数的类型,那么需要编写一个很臃肿的类作为传入参数类型的基类,但是使用协议就会方便很多,只要实现了这个协议的类型都能作为参数传入。(www.xing528.com)
接着声明了Apple和Banana两个结构体,它们各自实现了printable的协议,最终使用printInstance和instanceDescription的方法将两者的信息打印了出来。细心的读者还会发现,在实现了某个协议之后,编写代码时Xcode会帮助开发者自动补全协议中的方法或者属性,这也避免了开发者在编写时因为不小心而写错属性或者方法名。
本例中声明了两个函数,一个用于打印满足printable协议实例调用info方法的结果,另一个用于获取实例的description属性。本例中,函数传入参数指定的类型不是一个Swift类型,而是printable这个协议。使用协议去指定函数的传入参数会使函数的可扩展性更强,因为每个类都可能继承自不同的类,但是每个类可以满足同一个协议。如果指定传入参数的类型,那么需要编写一个很臃肿的类作为传入参数类型的基类,但是使用协议就会方便很多,只要实现了这个协议的类型都能作为参数传入。
接着声明了Apple和Banana两个结构体,它们各自实现了printable的协议,最终使用printInstance和instanceDescription的方法将两者的信息打印了出来。细心的读者还会发现,在实现了某个协议之后,编写代码时Xcode会帮助开发者自动补全协议中的方法或者属性,这也避免了开发者在编写时因为不小心而写错属性或者方法名。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。