Generics in Swift are extremely powerful. With protocols, we are able to use a common interface to interact with various types that conform to the protocol. Also, when we use generics, we are able to create generic types that can accept instances of any type. When we combine protocols and generics, as we saw with the List
types in this chapter, we are able to create very powerful libraries that do not only meet our present needs, but also our future needs.
Apple has stated that Generics are one of the most powerful features of Swift and that much of the Swift standard library is built using generics. You should keep this in mind as you are writing your applications.
Since protocol-oriented programming was introduced, there has been a lot of comparison between it and object-oriented programming. In order to do a proper comparison between the two, let's briefly take a look at object-oriented design with Swift.